我在C#中难以实现一个简单的类型转换器。我遵循了这个指南https://msdn.microsoft.com/en-us/library/ayybcxe5.aspx
这是我的类:
public class TestClass: TypeConverter
{
public string Property1{ get; set; }
public int Property2 { get; set; }
public TestClass(string p1, int p2)
{
Property1= p1;
Property2 = p2;
}
public override bool CanConvertFrom(ITypeDescriptorContext context,
Type sourceType)
{
if (sourceType == typeof(string)) {
return true;
}
return base.CanConvertFrom(context, sourceType);
}
public override object ConvertFrom(ITypeDescriptorContext context,
CultureInfo culture, object value)
{
if (value is string) {
return new TestClass ("", Int32.Parse(value.ToString()));
}
return base.ConvertFrom(context, culture, value);
}
public override object ConvertTo(ITypeDescriptorContext context,
CultureInfo culture, object value, Type destinationType)
{
if (destinationType == typeof(string)) {
return "___"
}
return base.ConvertTo(context, culture, value, destinationType);
}
}
目前我所关注的只是以下情况:将字符串"1231"转换为整数后传入TestClass("", Int32.Parse(value.ToString()));
下面是导致异常的代码:
TypeConverter converter=TypeDescriptor.GetConverter( typeof(TestClass));
Object lalala = converter.ConvertFromString("234");
这段代码抛出了NotSupportedException
异常,但我不知道为什么