110,535
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
namespace ConsoleApplication3
{
public class StringToHumanTypeConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return true;
}
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
if (value is string)
{
Human h = new Human();
h.Name = value as string;
return h;
}
return base.ConvertFrom(context, culture, value);
}
}
[TypeConverter(typeof(StringToHumanTypeConverter))]
public class Human
{
public string Name { get; set; }
public Human Child { get; set; }
}
class Program
{
static void Main(string[] args)
{
string v = "abc";
Human h = (Human)v;
}
}
}
var converter = new StringToHumanTypeConverter();
if (converter.CanConvertFrom(v.GetType())) //这个方法实现不够严密
{
var human = (Human)converter.ConvertFrom(v);
Console.WriteLine(human.Name);
}
//或者得重载运算符
public class Human
{
public string Name { get; set; }
public Human Child { get; set; }
public static explicit operator Human(string value)
{
return new Human() { Name = value };
}
}