Descrizione:
Ci sono due classi, A e B, I A eredita la classe B, e poi B è la classe madre
Ho impostato le proprietà TestAttribute rispettivamente nella classe A e nella classe B...
Poi, prendiamo le caratteristiche dell'oggetto e il codice è il seguente:
Ho scoperto che il numero di risultati è 1, e l'attributo è l'attributo imposto da A, non l'attributo imposto da B, figuriamoci fuso, perché succede questo???
[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{} Ci sono quattro possibili combinazioni qui:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false ] [AttributeUsage(AttributeTargets.Class, AllowMultiple = vero, Inherited = falso] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true ] [AttributeUsage(AttributeTargets.Class, AllowMultiple = vero, Ereditato = vero ] Il primo caso:
Se interroghiamo la classe Derive (vedremo più avanti come interrogare le proprietà di una classe a runtime), scopriremo che la funzione Aiuto non esiste perché la proprietà ereditata è impostata su falso.
Secondo caso:
Come nel primo caso, perché anche ereditario è impostato su falso.
La terza situazione:
Per spiegare il terzo e il quarto caso, aggiungiamo prima un po' di codice alla classe derivata:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{} Ora interroghiamo la funzione Aiuto, possiamo ottenere solo le proprietà della classe derivata, perché ereditata è impostata su vera, ma AllowMultiple è impostata su falso. Pertanto, la caratteristica Aiuto della classe base viene sovrascritta dalla funzione Aiuto della classe derivata.
La quarta situazione:
Qui troveremo che la classe derivata ha sia la funzione Aiuto della classe base sia la propria funzione Aiuto, perché AllowMultiple è impostato su true.
|