Do czego odnosi się Inherited
właściwość bool atrybutów?
Czy to oznacza, że jeśli zdefiniuję swoją klasę za pomocą atrybutu AbcAtribute
(który ma Inherited = true
) i jeśli odziedziczę inną klasę z tej klasy, to do klasy pochodnej zostanie zastosowany ten sam atrybut?
Aby wyjaśnić to pytanie za pomocą przykładu kodu, wyobraź sobie, co następuje:
[AttributeUsage(AttributeTargets.Class, Inherited = true)]
public class Random: Attribute
{ /* attribute logic here */ }
[Random]
class Mother
{ }
class Child : Mother
{ }
Czy Child
ma również Random
zastosowany atrybut?
c#
.net
vb.net
attributes
pożarł elizjum
źródło
źródło
Inherited
majątku zawiera rozbudowany przykład, który pokazuje różnicę międzyInherited=true
iInherited=false
dla odziedziczonej klasy ioverride
metody.Odpowiedzi:
Gdy Inherited = true (co jest wartością domyślną), oznacza to, że tworzony atrybut może być dziedziczony przez podklasy klasy dekorowanej przez atrybut.
A więc - jeśli utworzysz MyUberAttribute z [AttributeUsage (Inherited = true)]
Następnie użyj Atrybutu, dekorując superklasę ...
Jeśli utworzymy podklasę MySuperClass, będzie ona miała ten atrybut ...
Następnie utwórz wystąpienie MySubClass ...
Następnie sprawdź, czy ma atrybut ...
MySubClassInstance <--- ma teraz MyUberAttribute z „Bob” jako wartością SpecialName.
źródło
Tak, właśnie to oznacza. Atrybut
źródło
Dziedziczenie atrybutów jest domyślnie włączone.
Możesz zmienić to zachowanie poprzez:
źródło