Domanda

Se ho una classe che implementa ICustomTypeDescriptor posso ignorare le GetProperties () metodo per sostituire completamente tutte le proprietà della classe con il mio personalizzato PropertyDescriptors .

Ma cosa succede se voglio mantenere le proprietà esistenti della classe e aggiungere ulteriori proprietà alla classe? C'è un modo per restituire un insieme di proprietà descrittori personalizzate che vengono aggiunti alla proprietà della classe esistenti?

Per esempio io voglio che l'utente sia in grado di definire le proprietà personalizzate nel mio programma che mostrerà in una griglia delle proprietà. I valori delle proprietà personalizzate verranno memorizzati in un dizionario (chiave stringa, un valore oggetto) di raccolta, e voglio accodare PropertyDescriptors che leggere e scrivere i valori troppo e da questa collezione sulla base dei valori fondamentali.

Non credo che IExtenderProvider avrebbe funzionato, perché non fa che aumentare le proprietà di una classe all'altra. Ma ho bisogno di essere in grado di aggiungere e rimuovere le proprietà in modo dinamico in fase di esecuzione. Posso avere un IExtenderProvider di classe che implementa anche ICustomTypeDescriptor in modo che le proprietà si aggiunge può essere capito a tempo di esecuzione?

È stato utile?

Soluzione

Dovrebbe essere in grado di semplicemente aggiungendo alla collezione attuale:

    public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
    {
        PropertyDescriptorCollection cols = base.GetProperties(attributes);
        cols.Add(); // Add your custom property descriptor here
        return cols;
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top