我用下面的代碼從一個字符串返回一個對象的一個問題:C#TypeConverter.ConvertFrom()的問題
[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);
}
}
當我嘗試使用此代碼的使用方法:
string s_test = "test";
MyClass m_test;
m_test = (MyClass)Convert.ChangeType(s_test, typeof(MyClass));
我得到錯誤信息
從'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 ...
什麼是堆棧跟蹤? – SLaks 2011-02-10 16:02:41