AttributeUsageAttribute.Inherited Özellik

Tanım

BooleanBelirtilen özniteliğin türetilmiş sınıflar tarafından devralınıp alınmayacağını ve üyeleri geçersiz kılmayı belirleyen bir değer alır veya ayarlar.Gets or sets a Boolean value that determines whether the indicated attribute is inherited by derived classes and overriding members.

public:
 property bool Inherited { bool get(); void set(bool value); };
public bool Inherited { get; set; }
member this.Inherited : bool with get, set
Public Property Inherited As Boolean

Özellik Değeri

Boolean

true öznitelik türetilmiş sınıflar tarafından devralınabilir ve üyeleri geçersiz kılar; Aksi takdirde, false .true if the attribute can be inherited by derived classes and overriding members; otherwise, false. Varsayılan değer: true.The default is true.

Örnekler

Aşağıdaki örnek, AttributeUsageAttribute özellik değeri olan bir özniteliğin Inherited uygulandığı öznitelik ve bir true AttributeUsageAttribute Inherited özellik değeri olan özniteliğe false uygulanan bir özniteliği arasındaki farkı gösterir.The following example illustrates the difference between an attribute to which an AttributeUsageAttribute attribute with an Inherited property value of true is applied and one to which AttributeUsageAttribute attribute with an Inherited property value of false is applied. Örnek, ve olmak üzere iki özniteliği tanımlar InheritedAttribute NotInheritedAttribute .The example defines two attributes, InheritedAttribute and NotInheritedAttribute. Her iki öznitelik de sınıflar ve yöntemlere uygulanabilir.Both attributes can apply to classes and methods. ' A Inherited AttributeUsageAttribute uygulanan özniteliğin özelliği olduğundan InheritedAttribute true , türetilmiş sınıflar ve temel sınıf yöntemini geçersiz kılan türetilmiş sınıfların üyeleri tarafından devralınır.Because the Inherited property of the AttributeUsageAttribute attribute applied to InheritedAttribute is true, it is inherited by derived classes and the members of derived classes that override the base class method. Diğer taraftan, ' a Inherited AttributeUsageAttribute uygulanan özniteliğin özelliği olduğundan NotInheritedAttribute false , türetilmiş sınıflar ve temel sınıf yöntemini geçersiz kılan türetilmiş sınıfların üyeleri tarafından devralınmaz.On the other hand, because the Inherited property of the AttributeUsageAttribute attribute applied to NotInheritedAttribute is false, it is not inherited by derived classes and the members of derived classes that override the base class method.

[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
{ }
<AttributeUsage(AttributeTargets.Class Or AttributeTargets.Method _
                Or AttributeTargets.Property Or AttributeTargets.Field,
                Inherited:=True)>
Public Class InheritedAttribute : Inherits Attribute
End Class

<AttributeUsage(AttributeTargets.Class Or AttributeTargets.Method _
                Or AttributeTargets.Property Or AttributeTargets.Field,
                Inherited:=False)>
Public Class NotInheritedAttribute : Inherits Attribute
End Class

Örnek daha sonra iki temel sınıf tanımlar.The example then defines two base classes. Birincisi, BaseA , tek bir yöntemine sahiptir MethodA .The first, BaseA, has a single method, MethodA. İkinci, BaseB ,, tek bir yöntemine sahiptir MethodB .The second, BaseB, has a single method, MethodB. BaseA ve MethodA özniteliğiyle etiketlenebilir ve InheritedAttribute BaseB MethodB NotInheritedAttribute özniteliğiyle etiketlenir.BaseA and MethodA are tagged with the InheritedAttribute attribute, and BaseB and MethodB are tagged with the NotInheritedAttribute attribute. DerivedA öğesinden devralır BaseA ve metodunu geçersiz kılar MethodA .DerivedA inherits from BaseA and overrides its MethodA method. DerivedB öğesinden devralır BaseB ve metodunu geçersiz kılar MethodB .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: {typeA.GetCustomAttributes(typeof(InheritedAttribute), true).Length > 0}");
        MethodInfo memberA = typeA.GetMethod(nameof(DerivedA.MethodA));
        Console.WriteLine($"DerivedA.MemberA has Inherited attribute: {memberA.GetCustomAttributes(typeof(InheritedAttribute), true).Length > 0}\n");

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

<InheritedAttribute> Public Class BaseA
    <InheritedAttribute> Public Overridable Sub MethodA()
    End Sub
End Class

Public Class DerivedA : Inherits BaseA
    Public Overrides Sub MethodA()
    End Sub
End Class

<NotInheritedAttribute> Public Class BaseB
    <NotInheritedAttribute> Public Overridable Sub MethodB()
    End Sub
End Class

Public Class DerivedB : Inherits BaseB
    Public Overrides Sub MethodB()
    End Sub
End Class

Module Example
    Public Sub Main()
        Dim typeA As Type = GetType(DerivedA)
        Console.WriteLine($"DerivedA has Inherited attribute: {typeA.GetCustomAttributes(GetType(InheritedAttribute), True).Length > 0}")
        Dim memberA As MethodInfo = typeA.GetMethod(NameOf(DerivedA.MethodA))
        Console.WriteLine($"DerivedA.MemberA has Inherited attribute: {memberA.GetCustomAttributes(GetType(InheritedAttribute), True).Length > 0}")
        Console.WriteLine()

        Dim typeB As Type = GetType(DerivedB)
        Console.WriteLine($"DerivedB has NotInherited attribute: {typeB.GetCustomAttributes(GetType(NotInheritedAttribute), True).Length > 0}")
        Dim memberB As MethodInfo = typeB.GetMethod(NameOf(DerivedB.MethodB))
        Console.WriteLine($"DerivedB.MemberB has Inherited attribute: {memberB.GetCustomAttributes(GetType(NotInheritedAttribute), True).Length > 0}")
    End Sub
End Module
' 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

Örneğin çıkışının gösterdiği DerivedA ve DerivedA.MethodA özniteliğini devraldığı ve InheritedAttribute DerivedB DerivedB.MethodB özniteliği devralma olarak NotInheritedAttribute .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.

Açıklamalar

InheritedÖzelliği şunları belirler:The Inherited property determines:

  • Özniteliğin uygulandığı özniteliği ile etiketlenmiş bir taban sınıftan türetilmiş sınıfların AttributeUsageAttribute Bu özniteliği devralması.Whether classes derived from a base class tagged with the attribute to which the AttributeUsageAttribute attribute is applied inherit that attribute.

  • Özniteliğin uygulandığı öznitelik ile etiketlenmiş bir temel sınıf yöntemini geçersiz kılan türetilmiş sınıfların yöntemlerinin, AttributeUsageAttribute Bu özniteliği miras alır.Whether methods of derived classes that override a base class method tagged with the attribute to which the AttributeUsageAttribute attribute is applied inherit that attribute. (Bir sınıf bir temel sınıf üyesini devralırsa, bu üyeye uygulanan öznitelikleri de devralır.)(If a class inherits a base class member, it also inherits any attributes applied to that member.)

Şunlara uygulanır

Ayrıca bkz.