Ö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:
Yansıma Kullanarak Özniteliklere Erişme (C# ve Visual Basic)
Nasıl yapılır: Öznitelikleri Kullanarak C/C++ Birleşimi Oluşturma (C# ve Visual Basic)