AttributeUsageAttribute.Inherited Özellik

Tanım

Belirtilen özniteliğin türetilmiş sınıflar ve geçersiz kılma üyeleri tarafından devralınıp devralınmadığını belirleyen bir Boolean değer alır veya ayarlar.

C#
public bool Inherited { get; set; }

Özellik Değeri

Boolean

true özniteliği türetilmiş sınıflar ve geçersiz kılma üyeleri tarafından devralınabiliyorsa; aksi takdirde , false. Varsayılan değer: true.

Örnekler

Aşağıdaki örnek, özellik değerine sahip bir özniteliğin AttributeUsageAttribute uygulandığı öznitelik ile bir özellik değerine true false sahip Inherited Inherited özniteliğin AttributeUsageAttribute uygulandığı öznitelik arasındaki farkı gösterir. Örnek, ve NotInheritedAttributeiki özniteliği InheritedAttribute tanımlar. Her iki öznitelik de sınıflara ve yöntemlere uygulanabilir. Inherited için uygulanan InheritedAttribute özniteliğinin AttributeUsageAttribute özelliği olduğundantrue, 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. Öte yandan, uygulanan özniteliğinin NotInheritedAttribute AttributeUsageAttribute özelliği olduğundanfalse, Inherited 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ınmamıştır.

C#
[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
{ }

Örnek daha sonra iki temel sınıf tanımlar. İlk olan BaseA, tek bir yöntemine sahiptir: MethodA. İkinci olan BaseB, tek bir yöntemine sahiptir: MethodB. BaseA ve MethodA özniteliğiyle InheritedAttribute etiketlenir ve BaseB MethodB özniteliğiyle NotInheritedAttribute etiketlenir. DerivedA öğesini devralır BaseA ve yöntemini geçersiz kılar MethodA . DerivedB öğesini devralır BaseB ve yöntemini geçersiz kılar MethodB .

C#
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

Örnekteki çıktıda gösterildiği gibi özniteliğini DerivedA DerivedA.MethodA devralın InheritedAttribute ancak DerivedB DerivedB.MethodB özniteliği devralmayın NotInheritedAttribute .

Açıklamalar

Inherited özelliği aşağıdakileri belirler:

  • Özniteliğin uygulandığı öznitelikle etiketlenmiş bir temel sınıftan türetilen sınıfların AttributeUsageAttribute bu özniteliği devralıp devralmadığı.

  • Özniteliğin uygulandığı öznitelikle etiketlenmiş bir temel sınıf yöntemini geçersiz kılan türetilmiş sınıfların yöntemlerinin AttributeUsageAttribute bu özniteliği devralıp devralmadığı. (Bir sınıf temel sınıf üyesini devralırsa, o üyeye uygulanan tüm öznitelikleri de devralır.)

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Ayrıca bkz.