A que Inherited
se refere a propriedade bool nos atributos?
Isso significa que se eu definir minha classe com um atributo AbcAtribute
(que tem Inherited = true
), e se eu herdar outra classe dessa classe, que a classe derivada também terá o mesmo atributo aplicado a ela?
Para esclarecer essa questão com um exemplo de código, imagine o seguinte:
[AttributeUsage(AttributeTargets.Class, Inherited = true)]
public class Random: Attribute
{ /* attribute logic here */ }
[Random]
class Mother
{ }
class Child : Mother
{ }
Será que Child
também têm o Random
atributo aplicado a ele?
c#
.net
vb.net
attributes
elísio devorado
fonte
fonte
Inherited
propriedade tem um exemplo elaborado que mostra a diferença entreInherited=true
eInherited=false
para uma classe herdada e umoverride
método.Respostas:
Quando Inherited = true (que é o padrão), significa que o atributo que você está criando pode ser herdado por subclasses da classe decorada pelo atributo.
Então - se você criar MyUberAttribute com [AttributeUsage (Inherited = true)]
Em seguida, use o atributo decorando uma superclasse ...
Se criarmos uma subclasse de MySuperClass, ela terá este atributo ...
Em seguida, instancie uma instância de MySubClass ...
Em seguida, teste para ver se tem o atributo ...
MySubClassInstance <--- agora tem MyUberAttribute com "Bob" como o valor SpecialName.
fonte
Sim, é exatamente isso que significa. Atributo
fonte
A herança de atributos é habilitada por padrão.
Você pode alterar esse comportamento:
fonte