我自己写了一个TypeConverter,编译失败了
我自己写了一个小测试程序,试图把一个string类型转换成我想要的类型。如下所示:
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 };
}
}
}
[解决办法]
TypeConverter 这个类是在绑定的时候做转换器用的。
你建的控制台无法添加相应的dll。
如果想尝试它如果用,可以建一个wpf 应用程序,或者Silverlight应用程序。