Aracılığıyla paylaş


Öznitelikleri uygulama

Kodunuzun bir öğesine öznitelik uygulamak için aşağıdaki işlemi kullanın.

  1. Yeni bir öznitelik tanımlayın veya mevcut bir .NET özniteliğini kullanın.

  2. Kod öğesine özniteliği uygulamak için özniteliği öğesinin hemen önüne yerleştirin.

    Her dilin kendi öznitelik söz dizimi vardır. C++ ve C# dilinde, öznitelik köşeli parantezlerle çevrelenir ve öğeden, satır sonu da içerebilen boşlukla ayrılır. Visual Basic öznitelik köşeli parantezlerle çevrelenir ve aynı mantıksal satırda olmalıdır; satır sonu istenirse satır devamı işareti kullanılabilir.

  3. Özniteliği için konumsal parametreleri ve adlandırılmış parametreleri belirtin.

    Konumsal parametreler gereklidir ve adlandırılmış parametrelerden önce gelmelidir; öznitelik oluşturucularından birinin parametrelerine karşılık gelir. Adlandırılmış parametreler isteğe bağlıdır ve özniteliğin okuma/yazma özelliklerine karşılık gelir. C++ve C# dilinde, isteğe bağlı her parametre için belirtin name=value ; burada name özelliğin adıdır. Visual Basic'da name:=value belirtin.

Kodunuzu derlediğinizde özniteliği meta veriler halinde yayılır ve çalışma zamanı yansıma hizmetleri aracılığıyla ortak dil çalışma zamanı ve herhangi bir özel araç veya uygulama tarafından kullanılabilir.

Kural gereği, tüm öznitelik adları "Öznitelik" ile biter. Ancak, Visual Basic ve C# gibi çalışma zamanını hedefleyen birkaç dil, özniteliğin tam adını belirtmenizi gerektirmez. Örneğin, System.ObsoleteAttribute başlatmak istiyorsanız, yalnızca Kullanım Dışı olarak bağlantı vermeniz gerekir.

Geçerli öznitelik bağımsız değişkenleri

Bir özniteliğe parametreleri geçirirken, aşağıdaki ifade türlerinden birini kullanın.

  • Sabit ifadeler (değişmez değerler, const/Const değerler ve enum değerleri).
  • tür ifadeleri (C# dilinde typeof, Visual Basic'da GetType).
  • Derleme zamanında dize sabitleri üreten ad ifadeleri (C#'da nameof, Visual Basic'da NameOf).
  • Öğe değerleri olarak yalnızca önceki ifadeleri kullanan bir öznitelik parametre türünün dizi oluşturma ifadeleri.

Aşağıdaki türler öznitelik parametre türleri olarak geçerlidir:

  • Basit türler (C# anahtar sözcüğü / Visual Basic anahtar sözcük / .NET çalışma zamanı türü):

    C# Visual Basic .NET çalışma zamanı türü
    bool Boolean Boolean
    byte Byte Byte
    char Char Char
    double Double Double
    float Single Single
    int Integer Int32
    long Long Int64
    short Short Int16
    string String String
  • object (C# dilinde, değer geçerli öznitelik bağımsız değişken türlerinden biri olduğunda veya bunların tek boyutlu dizilerinden biri olduğunda).

  • Type.

  • Kullanım noktasından erişilebilen enum türleri.

  • Önceki türlerden herhangi birinin tek boyutlu dizileri.

Uyarı

sbyte, ushort, uint, ulong, decimal, nint, ve nuint türleri literal sabitleri desteklese de geçerli öznitelik parametre türleri değildir.

Aşağıdaki örneklerde geçerli öznitelik parametreleri gösterilmektedir.

[MyAttr(true)]                            // bool literal
[MyAttr(42)]                              // int literal
[MyAttr("hello")]                         // string literal
[MyAttr(MyEnum.Value)]                    // enum value
[MyAttr(typeof(string))]                  // typeof expression
[MyAttr(nameof(MyClass))]                 // nameof expression (string constant)
[MyAttr(new int[] { 1, 2, 3 })]          // array of constants
[MyAttr(new string[] { "a", "b" })]      // array of strings
<MyAttr(True)>                            ' Boolean literal
<MyAttr(42)>                              ' Integer literal
<MyAttr("hello")>                         ' String literal
<MyAttr(MyEnum.Value)>                    ' Enum value
<MyAttr(GetType(String))>                 ' GetType expression
<MyAttr(NameOf(MyClass))>                 ' NameOf expression (string constant)
<MyAttr(New Integer() {1, 2, 3})>         ' Array of constants

Derleyici hatasına neden olan bağımsız değişkenleri gösteren aşağıdaki örnekler:

string value = "test";
[MyAttr(value)]        // Error CS0182: not a constant expression
[MyAttr(GetValue())]   // Error CS0182: method calls aren't allowed

Bir yönteme öznitelik uygula

Aşağıdaki kod örneği, kodu eski olarak işaretleyen öğesinin nasıl kullanılacağını System.ObsoleteAttributegösterir. Dize "Will be removed in next version" özniteliğine geçirilir. Bu öznitelik, özniteliğin tanımladığı kod çağrıldığında geçirilen dizeyi görüntüleyen bir derleyici uyarısına neden olur.

public class Example
{
    // Specify attributes between square brackets in C#.
    // This attribute is applied only to the Add method.
    [Obsolete("Will be removed in next version.")]
    public static int Add(int a, int b)
    {
        return (a + b);
    }
}

class Test
{
    public static void Main()
    {
        // This generates a compile-time warning.
        int i = Example.Add(2, 2);
    }
}
Public Class Example
    ' Specify attributes between square brackets in C#.
    ' This attribute is applied only to the Add method.
    <Obsolete("Will be removed in next version.")>
    Public Shared Function Add(a As Integer, b As Integer) As Integer
        Return a + b
    End Function
End Class

Class Test
    Public Shared Sub Main()
        ' This generates a compile-time warning.
        Dim i As Integer = Example.Add(2, 2)
    End Sub
End Class

Öznitelikleri derleme düzeyinde uygulama

Derleme düzeyinde bir öznitelik uygulamak istiyorsanız assembly (Assembly Visual Basic) anahtar sözcüğünü kullanın. Aşağıdaki kod, derleme düzeyinde uygulanan AssemblyTitleAttribute öğesini gösterir.

using System.Reflection;
[assembly:AssemblyTitle("My Assembly")]
Imports System.Reflection
<Assembly: AssemblyTitle("My Assembly")>

Bu öznitelik uygulandığında, dize "My Assembly" dosyanın meta veri bölümündeki derleme bildirimine yerleştirilir. Özniteliği, IL Disassembler (Ildasm.exe) kullanarak veya özniteliği almak için özel bir program oluşturarak görüntüleyebilirsiniz.

Ayrıca bakınız