Solo el método ConvertTo se llama (muchas veces) al acceder a propertygrid. Esto devuelve correctamente el "¡Foo!" cadena en la propiedad grid Cuando hago clic para editar recibo una excepción Cannot convert object of type Foo to type System.String.
(no exactamente, traducida). El método ConvertFrom no se llama, ¿por qué? Y el error indica que está tratando de convertir A una cadena, no de.TypeConverter en propertygrid solo se convierte de cadena, no en
Creo que cuando quiero editar este objeto, tiene que convertir de Foo a cadena, y cuando termina de editar de nuevo. clase
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;
}
}
propiedad está accediendo a:
Foo _foo = new Foo();
[Editor(typeof(System.ComponentModel.Design.MultilineStringEditor), typeof(UITypeEditor))]
[TypeConverter(typeof(FooTypeConverter))]
public Foo Foo {
get {
return _foo;
}
set {
_foo = value;
}
}
descubrí que tiene algo que ver con la MultilineStringEditor, si inhabilito eso, funciona correctamente –
Acabo de ver su actualización; tendrá que escribir su propio editor: 'MultilineStringEditor' no ** va a saber cómo procesar un' Foo', por lo tanto, está diciendo "no", o se está produciendo y manejando una excepción. –