Beschreibung:
Es gibt zwei Klassen, A und B, I A erbt Klasse B, und dann ist B die Elternklasse
Ich habe die TestAttribut-Eigenschaften in Klasse A bzw. Klasse B festgelegt...
Dann nehmen wir die Eigenschaften des Objekts, und der Code ist wie folgt:
Ich habe festgestellt, dass die Anzahl der Ergebnisse 1 ist und das Attribut das von A gesetzte Attribut ist, nicht das von B gesetzte, geschweige denn zusammengeführt – warum ist das so???
[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{} Hier gibt es vier mögliche Kombinationen:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false ] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false ] [AttributeUsage(AttributeTargets.Class, AllowMultiple = falsch, Inherited = true ] [AttributeUsage(AttributeTargets.Class, AllowMultiple = wahr, Vererbt = wahr] Der erste Fall:
Wenn wir die Derive-Klasse abfragen (wir werden später sehen, wie man die Eigenschaften einer Klasse zur Laufzeit abfragt), stellen wir fest, dass die Help-Funktion nicht existiert, weil die vererbte Eigenschaft auf false gesetzt ist.
Zweiter Fall:
Genauso wie im ersten Fall, denn vererbt ist ebenfalls auf falsch gesetzt.
Die dritte Situation:
Um den dritten und vierten Fall zu erklären, fügen wir zunächst etwas Code zur abgeleiteten Klasse hinzu:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{} Suchen wir nun die Hilfefunktion ab, wir können nur die Eigenschaften der abgeleiteten Klasse erhalten, weil inherited auf true gesetzt ist, AllowMultiple jedoch auf false gesetzt ist. Daher wird die Hilfe-Funktion der Basisklasse von der Hilfe-Funktion der abgeleiteten Klasse überschrieben.
Die vierte Situation:
Hier stellen wir fest, dass die abgeleitete Klasse sowohl die Hilfe-Funktion der Basisklasse als auch ihre eigene Hilfe-Funktion besitzt, da AllowMultiple auf true gesetzt ist.
|