Pregunta

Si tengo una clase que implemente ICustomTypeDescriptor que puedo anular los GetProperties () método para reemplazar por completo todas las propiedades de la clase con mi costumbre PropertyDescriptors .

Pero lo que si quiero mantener las propiedades existentes de la clase y añadir propiedades adicionales a la clase? ¿Hay una manera de devolver un conjunto de descriptores de propiedades personalizadas que pueden ser añadidos a las propiedades de clase existentes?

Por ejemplo, yo quiero que el usuario sea capaz de definir propiedades personalizadas en mi programa que aparecerán en una cuadrícula de propiedades. Los valores de las propiedades personalizadas se almacenarán en un diccionario (clave de cadena, el valor del objeto) colección, y quiero añadir PropertyDescriptors que va a leer y escribir valores demasiado y desde esta colección basada en los valores clave.

No creo IExtenderProvider funcionaría, ya que sólo se suma a las propiedades de una clase a otra. Pero tengo que ser capaz de agregar y quitar las propiedades dinámicamente en tiempo de ejecución. ¿Puedo tener un IExtenderProvider clase que también implementa ICustomTypeDescriptor de modo que las propiedades que añade puedan imaginarse en tiempo de ejecución?

¿Fue útil?

Solución

Debe ser capaz de simplemente añadiendo a la colección actual:

    public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
    {
        PropertyDescriptorCollection cols = base.GetProperties(attributes);
        cols.Add(); // Add your custom property descriptor here
        return cols;
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top