Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Propiedad AttributeUsageAttribute.Inherited

 

Obtiene o establece un valor Boolean que determina si el atributo indicado se hereda por las clases derivadas y por los miembros de invalidación.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public bool Inherited { get; set; }

Valor de propiedad

Type: System.Boolean

Es true si el atributo lo pueden heredar clases derivadas y miembros de invalidación; de lo contrario, false. De manera predeterminada, es true.

El Inherited propiedad determina:

  • Si las clases derivan de una clase base etiquetan con el atributo al que el AttributeUsageAttribute se aplica el atributo heredan ese atributo.

  • Si los métodos de las clases derivadas que reemplaza un método de clase base etiquetan con el atributo al que el AttributeUsageAttribute se aplica el atributo heredan ese atributo. (Si una clase hereda a un miembro de clase base, también hereda los atributos aplicados a ese miembro.)

En el ejemplo siguiente se muestra la diferencia entre un atributo a la que un AttributeUsageAttribute atribuir a un Inherited valor de propiedad de true se aplica y otra a la que AttributeUsageAttribute atributo con un Inherited valor de propiedad de true se aplica. El ejemplo define dos atributos, InheritedAttribute y NotInheritedAttribute. Ambos atributos se pueden aplicar a las clases y métodos. Dado que la Inherited propiedad de la AttributeUsageAttribute atributo aplicado a InheritedAttribute es true, se ha heredado por las clases derivadas y los miembros de las clases derivadas que invalidación el método de clase base. Por otro lado, dado que la Inherited propiedad de la AttributeUsageAttribute atributo aplicado a NotInheritedAttribute es false, no lo heredan las clases derivadas y los miembros de las clases derivadas que invalidación el método de clase base.

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method |  
                AttributeTargets.Property | AttributeTargets.Field, 
                Inherited = true)]
public class InheritedAttribute : Attribute
{}

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method |
                AttributeTargets.Property | AttributeTargets.Field, 
                Inherited = false)]
public class NotInheritedAttribute : Attribute
{} 

The example then defines two base classes. The first, BaseA, has a single method, MethodA. The second, BaseB, has a single method, MethodB. BaseA and MethodA are tagged with the InheritedAttribute attribute, and BaseB and MethodB are tagged with the NotInheritedAttribute attribute. DerivedA inherits from BaseA and overrides its MethodA method. DerivedB inherits from BaseB and overrides its MethodB method.

using System;
using System.Reflection;

[InheritedAttribute]
public class BaseA
{
   [InheritedAttribute] 
   public virtual void MethodA()   
   {}
}

public class DerivedA : BaseA
{
   public override void MethodA()
   {}
} 

[NotInheritedAttribute] 
public class BaseB
{
   [NotInheritedAttribute] 
   public virtual void MethodB()   
   {}
}

public class DerivedB : BaseB
{
   public override void MethodB()
   {}
}

public class Example
{
   public static void Main()
   {
      Type typeA = typeof(DerivedA);
      Console.WriteLine("DerivedA has Inherited attribute: {0}", 
                        typeA.GetCustomAttributes(typeof(InheritedAttribute), true).Length > 0); 
      MethodInfo memberA = typeA.GetMethod("MethodA");
      Console.WriteLine("DerivedA.MemberA has Inherited attribute: {0}\n", 
                        memberA.GetCustomAttributes(typeof(InheritedAttribute), true).Length > 0); 

      Type typeB = typeof(DerivedB);
      Console.WriteLine("DerivedB has Inherited attribute: {0}", 
                        typeB.GetCustomAttributes(typeof(InheritedAttribute), true).Length > 0); 
      MethodInfo memberB = typeB.GetMethod("MethodB");
      Console.WriteLine("DerivedB.MemberB has Inherited attribute: {0}", 
                        memberB.GetCustomAttributes(typeof(InheritedAttribute), true).Length > 0); 
   }
}
// The example displays the following output:
//       DerivedA has Inherited attribute: True
//       DerivedA.MemberA has Inherited attribute: True
//       
//       DerivedB has Inherited attribute: False
//       DerivedB.MemberB has Inherited attribute: False

As the output from the example shows, DerivedA and DerivedA.MethodA inherit the InheritedAttribute attribute, but DerivedB and DerivedB.MethodB do not inherit the NotInheritedAttribute attribute.

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: