У меня проблема со следующим кодом, который возвращает объект из строки:
[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 ...