mbp*_*mbp 1 .net c# type-conversion typeconverter
我有一个问题,以下代码从字符串返回一个对象:
[TypeConverter(typeof(MyConverter))]
public class MyClass
{
public string s;
}
public class MyConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return (sourceType == typeof(string)) ? true : base.CanConvertFrom(context, sourceType);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
if (value is string)
{
MyClass m = new MyClass();
m.s = (string)value;
return m;
}
return base.ConvertFrom(context, culture, value);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用此代码时:
string s_test = "test";
MyClass m_test;
m_test = (MyClass)Convert.ChangeType(s_test, typeof(MyClass));
Run Code Online (Sandbox Code Playgroud)
我收到错误消息
从'System.String'到'MyClass'的转换无效.
我的代码有什么问题?请注意,我必须使用ConvertFrom()方法...
预先感谢您的帮助.
堆栈跟踪:
[InvalidCastException: Invalid cast from 'System.String' to 'MyClass'.] System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider) +9496632 System.String.System.IConvertible.ToType(Type type, IFormatProvider provider) +8 System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) +9531720 System.Convert.ChangeType(Object value, Type conversionType) +32 OrderController.Index() in [...].cs:70 ... omitted for brevity ...
你期望Convert.ChangeType使用一个TypeConverter如果存在 - 它没有.TypeConverter通常与TypeDescriptor(通常隐含在UI框架中)一起使用.
| 归档时间: |
|
| 查看次数: |
6025 次 |
| 最近记录: |