Öznitelikler (C# ve Visual Basic)

Öznitelikler, meta verilerveya bildirim deyimi bilgi (Derlemeler, türleri, yöntemleri, özellikleri ve benzeri) kodu ile ilişkilendirme güçlü bir yöntem sağlar.öznitelik bir program varlıkla ilişkilendirilmiş duruma geldikten sonra öznitelik zamanında adı verilen bir teknik kullanarak sorgulanabilir yansıma.Daha fazla bilgi için bkz. Yansıma (C# ve Visual Basic).

Öznitelikler, aşağıdaki özelliklere sahiptir:

  • Öznitelikler için program meta veriler ekleyin.Meta veriler programtanımlı türler hakkında bilgiler verilmektedir.Tüm.net derlemeleri belirlenen türleri ve derlemeiçinde tanımlı türü üyeleri tanımlayan meta veriler içerir.Gerekli olan ek bilgileri belirtmek için özel öznitelikleri ekleyebilirsiniz.Daha fazla bilgi için bkz: Özel Öznitelikler Oluşturma (C# ve Visual Basic).

  • uygulamak

  • Öznitelikler bağımsız değişkenleri yöntemleri ve özellikleri aynı şekilde kabul edebilirsiniz.

  • program kendi meta veriler veya diğer programlarda meta veriler yansımakullanarak inceleyebilirsiniz.Daha fazla bilgi için bkz. Yansıma Kullanarak Özniteliklere Erişme (C# ve Visual Basic).

Öznitelikleri kullanma

Belirli bir öznitelik bildirimleri, geçerli olduğu türlerini kısıtlamak, ancak çoğu herhangi bir bildirim, öznitelikleri yerleştirilebilir.C# [NULL]'ta bir öznitelik köşeli parantez ([]) içine öznitelik, adını koyarak bildirim geçerli olduğu varlık belirtmiş olursunuz.Visual Basic, bir öznitelik köşeli parantez içine alınır (< >).Bunu, aynı çizgiüzerinde uygulandığı öğe hemen önce yer almalıdır.

Bu örnekte, SerializableAttribute öznitelik kullanılır sınıfbelirli bir özelliğini uygulamak ' ni:

<System.Serializable()> Public Class SampleClass
    ' Objects of this type can be serialized. 
End Class
[System.Serializable]
public class SampleClass
{
    // Objects of this type can be serialized.
}

öznitelik bir yöntem DllImportAttribute şöyle bildirilmiştir:

Imports System.Runtime.InteropServices


...


<System.Runtime.InteropServices.DllImport("user32.dll")> 
Sub SampleMethod()
End Sub
using System.Runtime.InteropServices;


...


[System.Runtime.InteropServices.DllImport("user32.dll")]
extern static void SampleMethod();

Birden fazla öznitelik bildirimyer alır:

Imports System.Runtime.InteropServices


...


Sub MethodA(<[In](), Out()> ByVal x As Double)
End Sub 
Sub MethodB(<Out(), [In]()> ByVal x As Double)
End Sub
using System.Runtime.InteropServices;


...


void MethodA([In][Out] ref double x) { }
void MethodB([Out][In] ref double x) { }
void MethodC([In, Out] ref double x) { }

Bazı öznitelikler, belirli bir varlık için birden çok kez belirtilebilir.Örnek olarak böyle bir multiuse öznitelik olan ConditionalAttribute:

<Conditional("DEBUG"), Conditional("TEST1")> 
Sub TraceMethod()
End Sub
[Conditional("DEBUG"), Conditional("TEST1")]
void TraceMethod()
{
    // ...
}

[!NOT]

Kural gereği, sözcük bunları diğer öğelerden ayırmak için "özniteliği" tüm öznitelik adlarının bitişi.net Framework.Ancak, öznitelikleri kodu kullanırken öznitelik sonekini belirtin gerekmez.Örneğin, [DllImport] eşdeğeri olan [DllImportAttribute], ancak DllImportAttribute öznitelikgerçek adıdır.net Framework.

Öznitelik parametreleri

Konumsal, adsız veya adlandırılmış parametreleri birçok özniteliklere sahip.Konumsal parametreler, belirli bir sırada belirtilen ve gözardı edilmesi; Adlandırılmış parametreler isteğe bağlıdır ve herhangi bir sırada belirtilebilir.Önce belirtilen Konumsal parametreler.Örneğin, bu üç özniteliği eşdeğerdir:

[DllImport("user32.dll")]
[DllImport("user32.dll", SetLastError=false, ExactSpelling=false)]
[DllImport("user32.dll", ExactSpelling=false, SetLastError=false)]
<DllImport("user32.dll")>
<DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)>
<DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>

Birinci parametre, dll adı Konumsal ve her zaman ilk gelir; diğerleri olarak adlandırılır.Bu durumda, bunlar devre dışı bırakılacak şekilde hem de yanlış, parametreleri varsayılan adı.Varsayılan parametre değerleri hakkında bilgi için tek tek öznitelikbelgelerine başvurun.

Öznitelik hedefleri

hedef öznitelik öznitelik uygulandığı varlıktır.Örneğin, bir öznitelik sınıf, belirli bir yöntemveya tüm derleme uygulamak olabilir.Varsayılan olarak, bir öznitelik önündeki öğesine uygulanır.Ancak, yöntemveya onun parametreveya dönüş değeri bir öznitelik uygulanıp uygulanmayacağını, açık olarak, örneğin, tanımlayabilirsiniz.

öznitelikhedefaçıkça belirlemek için aşağıdaki sözdizimini kullanın:

[target : attribute-list]
<target : attribute-list>

Olası listesini target değerler aşağıdaki tabloda gösterilen.

C#

Visual Basic

Uygulama alanı

assembly

Assembly

Tüm derleme

module

Module

( Visual Basic modülünden farklı olan) geçerli derlememodül

field

Desteklenmiyor

Bir sınıf veya yapı alanında

event

Desteklenmiyor

Olay

method

Desteklenmiyor

Yöntem veya get ve set özellik erişimcisi

param

Desteklenmiyor

Yöntem parametreleri veya set özellik erişimcisi parametreleri

property

Desteklenmiyor

Özellik

return

Desteklenmiyor

Dönüş değeri bir yöntem, özellikdizin oluşturucu, ya da get özellik erişimcisi

type

Desteklenmiyor

Yapı, sınıf, arabirim, enum veya metot temsilcisi

Aşağıdaki örnekte gösterildiği niteliklerini uygulamak Derlemeler ve modüller nasıl.Daha fazla bilgi için bkz. Ortak Öznitelikler (C# ve Visual Basic).

Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"), 
Module: CLSCompliant(True)> 
using System;
using System.Reflection;
[assembly: AssemblyTitleAttribute("Production assembly 4")]
[module: CLSCompliant(true)]

Aşağıdaki örnek, nasıl uygulamak yöntemleri, yöntem parametreleri ve yöntem öznitelikleri C# [NULL]'ta dönüş değerleri gösterir.

// default: applies to method
[SomeAttr]
int Method1() { return 0; }

// applies to method
[method: SomeAttr]
int Method2() { return 0; }

// applies to return value
[return: SomeAttr]
int Method3() { return 0; }

[!NOT]

Hedef ne olursa olsun SomeAttr geçerli olması için tanımlanan return hedef olduğu belirtilecek, bile SomeAttr yalnızca dönüş değerleri uygulamak için tanımlanmış. Başka bir deyişle, derleyici kullanılmayan AttributeUsage öznitelik belirsiz hedefleri çözümlemek için bilgi.Daha fazla bilgi için bkz. AttributeUsage (C# ve Visual Basic).

Yaygın kullanım şekilleri öznitelikleri

Aşağıdaki listede öznitelikleri yaygın kullanımlarından bazıları kodu içerir:

  • Yöntemleri kullanarak işaretleme WebMethod öznitelik yöntem SOAP Protokolü üzerinden çağrılabilir olacağını belirtmek için Web Hizmetleri. Daha fazla bilgi için bkz. WebMethodAttribute.

  • Açıklayan yerel kod ile birlikte çalışma, hazırlamakyöntem parametrelerini nasıl. Daha fazla bilgi için bkz. MarshalAsAttribute.

  • COM sınıflarını, yöntemlerini ve arabirimlerini özelliklerini açıklayan.

  • Arama yönetilmeyen kod kullanarak DllImportAttribute sınıf.

  • Başlık, sürüm, açıklama veya ticari marka açısından, derleme açıklayan.

  • Kalıcılık için seri hale getirmek için bir sınıf üyeleri açıklayan.

  • Açıklayan nasıl sınıf üyesi ve XMLseri hale getirmeiçin XML düğümleri arasında eşleme .

  • Yöntemleri için güvenlik gereksinimlerini açıklayan.

  • güvenlikzorlamak için kullanılan özellikleri belirleme.

  • Kod hata ayıklamakkolay kalır şekilde en iyi duruma getirme tam zamanında (JIT) derleyici tarafından denetliyor.

  • Arayan bir yöntemhakkında bilgi edinme.

İlgili Bölümler

Daha fazla bilgi için bkz:

Ayrıca bkz.

Başvuru

Yansıma (C# ve Visual Basic)

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

Visual Basic Programlama Kılavuzu

Öznitelikleri Kullanarak Meta Verileri Genişletme