Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

AttributeUsageAttribute.Inherited-Eigenschaft

 

Ruft einen Boolean-Wert ab, der bestimmt, ob das angegebene Attribut von abgeleiteten Klassen und überschreibenden Membern geerbt wird, oder legt diesen Wert fest.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public bool Inherited { get; set; }

Eigenschaftswert

Type: System.Boolean

true, wenn das Attribut von abgeleiteten Klassen und überschreibenden Membern geerbt werden kann, andernfalls false. Die Standardeinstellung ist true.

Die Inherited Eigenschaft bestimmt:

  • Ob Klassen eine Basisklasse abgeleitete mit dem Attribut, markiert der AttributeUsageAttribute Attribut angewendet wird dieses Attribut erben.

  • Gibt an, ob Methoden von Klassen abgeleitet, die eine Basisklassenmethode außer Kraft setzen mit dem Attribut, markiert der AttributeUsageAttribute Attribut angewendet wird dieses Attribut erben. (Wenn eine Klasse einen Member der Basisklasse erbt, erbt es auch alle Attribute, die auf diesen Member angewendet.)

Das folgende Beispiel veranschaulicht den Unterschied zwischen einem Attribut zu dem ein AttributeUsageAttribute -Attribut mit ein Inherited Eigenschaftswert, der true angewendet wird und ein AttributeUsageAttribute -Attribut mit einer Inherited Eigenschaftswert des true angewendet wird. Im Beispiel werden zwei Attribute definiert InheritedAttribute und NotInheritedAttribute. Beide Attribute können auf Klassen und Methoden anwenden. Da die Inherited Eigenschaft von der AttributeUsageAttribute angewendet InheritedAttribute ist true, es wird von abgeleiteten Klassen geerbt und die Member der abgeleiteten Klassen, die die Basisklassenmethode außer Kraft setzen. Andererseits, da die Inherited Eigenschaft von der AttributeUsageAttribute angewendet NotInheritedAttribute ist false, nicht von abgeleiteten Klassen geerbt und die Member der abgeleiteten Klassen, die die Basisklassenmethode außer Kraft setzen.

[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.

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: