Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kodunuzun bir öğesine öznitelik uygulamak için aşağıdaki işlemi kullanın.
Yeni bir öznitelik tanımlayın veya mevcut bir .NET özniteliğini kullanın.
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.
Ö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; buradanameözelliğin adıdır. Visual Basic'daname:=valuebelirtin.
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/Constdeğerler ve enum değerleri). - tür ifadeleri (C# dilinde
typeof, Visual Basic'daGetType). - Derleme zamanında dize sabitleri üreten ad ifadeleri (C#'da
nameof, Visual Basic'daNameOf). - Öğ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ü boolBooleanBoolean byteByteByte charCharChar doubleDoubleDouble floatSingleSingle intIntegerInt32 longLongInt64 shortShortInt16 stringStringString 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.