При обращении к таблице свойств вызывается только метод ConvertTo (много раз). Это правильно возвращает "Foo!" строка в сетке свойств. Когда я нажимаю для редактирования, я получаю исключение Cannot convert object of type Foo to type System.String.
(не совсем переведено). Метод ConvertFrom не вызывается, какие-либо подсказки, почему? И ошибка указывает, что он пытается преобразовать в строку, а не из.
Я бы подумал, что когда я захочу отредактировать этот объект, он должен преобразовать Foo в строку, а когда закончит редактирование обратно.
Класс StringConverter:
public class FooTypeConverter : StringConverter {
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) {
return new Foo((string) value);
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {
return "Foo!";
}
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) {
return true;
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) {
return true;
}
}
Доступность объекта:
Foo _foo = new Foo();
[Editor(typeof(System.ComponentModel.Design.MultilineStringEditor), typeof(UITypeEditor))]
[TypeConverter(typeof(FooTypeConverter))]
public Foo Foo {
get {
return _foo;
}
set {
_foo = value;
}
}