Ortak Öznitelikler (C# ve Visual Basic)
Bu konuda, C# ve Visual Basic programlarında en sık kullanılan öznitelikler açıklanmaktadır.
Genel nitelikleri
Geçersiz öznitelik
Koşul özniteliği
Arayanın bilgileri öznitelikleri
Visual Basic öznitelikleri
Genel nitelikleri
Çoğu öznitelikleri sınıfları veya yöntemler gibi belirli bir dil öğelerine uygulanır; Ancak, bazı öznitelikler genel — tüm derleme veya modül için geçerli olurlar.Örneğin, AssemblyVersionAttribute özniteliği, böyle bir derleme sürüm bilgileri katıştırmak için kullanılabilir:
[assembly: AssemblyVersion("1.0.0.0")]
<Assembly: AssemblyVersion("1.0.0.0")>
Genel öznitelikleri sonra herhangi bir kaynak kodu görünür üst düzey using yönergeleri (Imports Visual Basic) ve herhangi bir tür, modül veya ad alanı bildirimi önce.Genel öznitelikleri birden çok kaynak dosyada bulunabilir, ancak dosyaları tek bir derleme geçişinde derlenmelidir.Visual Basic projeleri için genel öznitelikleri genelde otomatik olarak oluşturulur AssemblyInfo.vb dosyasındaki konur Visual Basic projeleri.C# projeleri, n AssemblyInfo.cs dosyasında konur.
Derlemenin derleme hakkında bilgi sağlayan değerler nitelikleridir.Bunlar aşağıdaki kategorilere ayrılır:
Derleme kimlik öznitelikleri
Bilgilendirme öznitelikleri
Derleme bildirim öznitelikleri
Kesin ad öznitelikleri
Derleme kimlik öznitelikleri
(Kesin adı, eğer varsa ile) üç özniteliği bir derleme kimliğini belirleme: kültür adı ve sürümü.Bu öznitelikler, derleme tam adı formunu ve kodda başvuru gereklidir.Bir derlemenin sürümü ve kültür özniteliklerini kullanarak ayarlayabilirsiniz.Ancak, derleyici tarafından ad değeri Visual Studio IDE içinde Derleme Bilgileri İletişim Kutusu, veya Assembly Linker (Al.exe) derleme oluşturulduğunda derleme bildirimi içeren dosya.AssemblyFlagsAttribute Özniteliği, derleme birden çok kopyası bulunabilir olup olmadığını belirtir.
Kimlik öznitelikleri aşağıdaki tabloda gösterilmektedir.
Öznitelik |
Purpose |
---|---|
Bir derlemenin kimliği tam olarak açıklar. |
|
Derleme sürümünü belirtir. |
|
Derleme destekler, kültür belirtir. |
|
Derleme, aynı işlemde veya aynı uygulama etki alanında aynı bilgisayarda yan yana yürütme destekleyip desteklemediğini belirtir. |
Bilgilendirme öznitelikleri
Ek şirket veya ürün bilgisi için bir derleme sağlamak için bilgilendirme özniteliklerini kullanabilirsiniz.Aşağıdaki tabloda tanımlanan bilgilendirme öznitelikleri gösterir System.Reflection ad.
Öznitelik |
Purpose |
---|---|
Derleme bildirimi ürün adını belirtir bir özel özniteliği tanımlar. |
|
Ticari marka bir derleme bildirimi için belirten özel bir öznitelik tanımlar. |
|
Derleme bildirimi için bilgilendirici bir sürümünü belirten özel bir öznitelik tanımlar. |
|
Derleme bildirimi için şirket adını belirten özel bir öznitelik tanımlar. |
|
Derleme bildirimi için telif hakkı belirten özel bir öznitelik tanımlar. |
|
Win32 dosya sürüm kaynağı belirli bir sürüm numarasını kullanın derleyiciye. |
|
Derleme Common Language Specification'a (cls) ile uyumlu olup olmadığını gösterir. |
Derleme bildirim öznitelikleri
Derleme bildirim özniteliklerini derleme bildiriminde bilgi sağlamak için kullanabilirsiniz.Bu başlık, açıklama, varsayılan diğer adı ve yapılandırmasını içerir.Aşağıdaki tabloda tanımlanmış derleme bildirim özniteliklerini gösterir System.Reflection ad.
Öznitelik |
Purpose |
---|---|
Derleme bildirimi derleme ünvanını belirten özel bir öznitelik tanımlar. |
|
Derleme bildirimi için bir derleme açıklaması belirten özel bir öznitelik tanımlar. |
|
Bir derleme bildirimi için (örneğin, perakende veya hata ayıklama) bir derleme yapılandırmasını belirten özel bir öznitelik tanımlar. |
|
Kolay varsayılan diğer ad için bir derleme bildirimi tanımlar |
Kesin ad öznitelikleri
Visual Studio'nun önceki sürümleri bu montaj düzeyi özniteliklere sahip güçlü adlarını kullanarak derleme imzalama gerçekleştirildi:
Bu hala desteklenmektedir, ancak derlemeler imzalamak için tercih edilen yolu İmzalama sayfa proje Tasarımcısı.Daha fazla bilgi için bkz. İmzalama Sayfası, Proje Tasarımcısı ve Nasıl yapılır: (Visual Studio) derleme imzalama.
Geçersiz öznitelik
Obsolete Özniteliği artık kullanılmak üzere önerilen program varlık olarak işaretler.Eski işaretlenmiş bir varlığın her kullanım sonradan bir uyarı veya öznitelik nasıl yapılandırıldığına bağlı olarak bir hata oluşturacaktır.Örne?in:
<System.Obsolete("use class B")>
Class A
Sub Method()
End Sub
End Class
Class B
<System.Obsolete("use NewMethod", True)>
Sub OldMethod()
End Sub
Sub NewMethod()
End Sub
End Class
[System.Obsolete("use class B")]
class A
{
public void Method() { }
}
class B
{
[System.Obsolete("use NewMethod", true)]
public void OldMethod() { }
public void NewMethod() { }
}
Bu örnekte Obsolete özniteliği sınıfa uygulanan A ve yöntemine B.OldMethod.İkinci bağımsız değişken özniteliği yapıcısının uygulanan çünkü B.OldMethod ayarlamak true, sınıfını kullanarak, ancak bu yöntem bir derleyici hatası neden olur A bir uyarı yalnızca üretim olacak.Arayan B.NewMethod, ancak, herhangi bir uyarı veya hata üretir.
Öznitelik Oluşturucu ilk bağımsız değişken olarak sağlanan dize uyarı veya hata bir parçası olarak görüntülenir.Örneğin, önceki tanımlarla kullandığınızda, aşağıdaki kod iki uyarı ve bir hata oluşturur:
' Generates 2 warnings:
' Dim a As New A
' Generate no errors or warnings:
Dim b As New B
b.NewMethod()
' Generates an error, terminating compilation:
' b.OldMethod()
// Generates 2 warnings:
// A a = new A();
// Generate no errors or warnings:
B b = new B();
b.NewMethod();
// Generates an error, terminating compilation:
// b.OldMethod();
Sınıf için iki uyarı A oluşturulur: bir sınıf başvurusu bildiriminin ve bir sınıf kurucusunu.
Obsolete Öznitelik bağımsız değişkeni olmadan kullanılabilir, ancak neden bir açıklama da dahil olmak üzere madde kullanılmıyor ve ne kullanmanız önerilir.
Obsolete Özniteliği tek kullanım özelliği ve nitelikleri sağlayan herhangi bir varlık için uygulanabilir.Obsolete seçeneği ObsoleteAttribute için bir eş addır.
Koşul özniteliği
Conditional Özniteliği bir yönteminin çalışmasını ön işlem tanımlayıcısını temel bağımlı yapar.Conditional Özniteliği için bir diğer ad, ConditionalAttributeve bir yöntem ya da öznitelik sınıfı için uygulanabilir.
Bu örnekte, Conditional veya programa özgü tanı bilgilerinin görüntülenmesini devre dışı bir yöntem uygulanır:
#Const TRACE_ON = True
Imports System
Imports System.Diagnostics
Module TestConditionalAttribute
Public Class Trace
<Conditional("TRACE_ON")>
Public Shared Sub Msg(ByVal msg As String)
Console.WriteLine(msg)
End Sub
End Class
Sub Main()
Trace.Msg("Now in Main...")
Console.WriteLine("Done.")
End Sub
End Module
#define TRACE_ON
using System;
using System.Diagnostics;
public class Trace
{
[Conditional("TRACE_ON")]
public static void Msg(string msg)
{
Console.WriteLine(msg);
}
}
public class ProgramClass
{
static void Main()
{
Trace.Msg("Now in Main...");
Console.WriteLine("Done.");
}
}
TRACE_ON Tanımlayıcısı tanımlı değil, hiçbir İzleme çıktısı görüntülenir.
Conditional Özniteliği ile kullanılan genellikle DEBUG izleme ve özellikleri bulunan bir yayın oluşturur, ancak hata ayıklama yapılarında için günlüğü etkinleştirmek için tanımlayıcı böyle:
<Conditional("DEBUG")>
Shared Sub DebugMethod()
End Sub
[Conditional("DEBUG")]
static void DebugMethod()
{
}
Koşullu olarak işaretlenmiş bir yöntem çağrıldığında varlığı veya belirtilen önişleme sembolün yokluğunda çağrısı atlanmış veya dahil olup olmadığını belirler.Çağrı sembolü tanımlanırsa, eklenir; Aksi takdirde çağrı atlanır.Kullanarak Conditional bir temizleyici olan yöntemlerin içinde kapsayan daha zarif ve daha az hataya alternatif #if…#endif böyle engeller:
#If DEBUG Then
Sub ConditionalMethod()
End Sub
#End If
#if DEBUG
void ConditionalMethod()
{
}
#endif
Koşullu bir yöntem, bir yapı ya da Sınıf bildirimindeki bir yöntem olmalıdır ve dönüş değeri olmamalıdır.
Birden fazla tanımlayıcı kullanarak
Birden çok yöntem varsa, Conditional öznitelikleri, yöntemine yapýlan çaðrýyý dahil en az bir koşullu sembolleri tanımlanırsa, (diğer bir deyişle, semboller mantıksal or işlecini kullanarak birbirine bağlıdır).Bu örnekte, ya da varlığını A veya B bir yöntem çağrısında neden olur:
<Conditional("A"), Conditional("B")>
Shared Sub DoIfAorB()
End Sub
[Conditional("A"), Conditional("B")]
static void DoIfAorB()
{
// ...
}
Mantıksal ve işleci kullanılarak sembolleri bağlama efekti elde etmek için seri koşullu yöntemleri tanımlayabilir.Yalnızca iki, ikinci yöntem aşağıdaki gibi yürütülür A ve B tanımlanır:
<Conditional("A")>
Shared Sub DoIfA()
DoIfAandB()
End Sub
<Conditional("B")>
Shared Sub DoIfAandB()
' Code to execute when both A and B are defined...
End Sub
[Conditional("A")]
static void DoIfA()
{
DoIfAandB();
}
[Conditional("B")]
static void DoIfAandB()
{
// Code to execute when both A and B are defined...
}
Koşul özniteliği sınıfları ile kullanma
Conditional Özniteliği için öznitelik sınıfı tanımını da uygulanabilir.Bu örnekte, özel öznitelik Documentation yalnızca hata ayıklama tanımlanırsa, bilgileri meta verileri ekler.
<Conditional("DEBUG")>
Public Class Documentation
Inherits System.Attribute
Private text As String
Sub New(ByVal doc_text As String)
text = doc_text
End Sub
End Class
Class SampleClass
' This attribute will only be included if DEBUG is defined.
<Documentation("This method displays an integer.")>
Shared Sub DoWork(ByVal i As Integer)
System.Console.WriteLine(i)
End Sub
End Class
[Conditional("DEBUG")]
public class Documentation : System.Attribute
{
string text;
public Documentation(string text)
{
this.text = text;
}
}
class SampleClass
{
// This attribute will only be included if DEBUG is defined.
[Documentation("This method displays an integer.")]
static void DoWork(int i)
{
System.Console.WriteLine(i.ToString());
}
}
Arayanın bilgileri öznitelikleri
Arayan bilgisi özniteliklerini kullanarak arayan için bir yöntem hakkında bilgi edinebilirsiniz.Dosya yolunu kaynak kodunu kaynak kodu ve arayan üye adı satır numarasını edinebilirsiniz.
Üye arayan bilgilerini edinmek için isteğe bağlı parametreler için uygulanan öznitelikleri kullanın.Her isteğe bağlı bir parametre varsayılan değeri belirtir.Aşağıdaki tabloda tanımlanan arayan bilgisi özniteliklerini listeler System.Runtime.CompilerServices ad alanı:
Öznitelik |
Description |
Tür |
Arayan içeren kaynak dosyasının tam yolu.Derleme zamanında yol budur. |
String |
|
Hangi yöntemi çağrılır kaynak dosyadaki satır numarası. |
Integer |
|
Yöntem adı veya arayan özelliği adı.Daha fazla bilgi için bkz. Arayan Bilgileri (C# ve Visual Basic). |
String |
Arayanın bilgileri öznitelikler hakkında daha fazla bilgi için bkz: Arayan Bilgileri (C# ve Visual Basic).
Visual Basic öznitelikleri
Visual Basic belirli öznitelikleri aşağıdaki tabloda listelenmektedir.
Öznitelik |
Purpose |
---|---|
Derleyici sınıf bir com nesnesi olarak açık olduğunu gösterir. |
|
Modül üyelerinin yalnızca modülü için gereken nitelik kullanarak erişilmesine izin verir. |
|
Sabit uzunluklu bir dize boyutunu kullanmak için bir yapı ile giriş ve çıkış dosyası belirtir işlevleri. |
|
Giriş ve çıkış dosyası ile bir yapıda kullanmak için sabit bir dizi boyutunu belirtir işlevleri. |
COMClassAttribute
Use COMClassAttribute com bileşenlerini oluşturma işlemini basitleştirmek için Visual Basic.com nesneleri önemli ölçüde farklı .NET Framework derlemeler, olmadan ve COMClassAttribute, çok sayıda com nesnesinden oluşturmak için adımları izlemenize gerek Visual Basic.Sınıfları ile işaretlenmiş için COMClassAttribute, derleyici bu adımların çoğu otomatik olarak gerçekleştirir.
HideModuleNameAttribute
Use HideModuleNameAttribute modül üyelerinin yalnızca modülü için gereken nitelik kullanarak erişilmesine izin vermek.
VBFixedStringAttribute
Use VBFixedStringAttribute zorlamak için Visual Basic sabit uzunluklu bir dize oluşturmak için.Varsayılan olarak değişken uzunluktaki dizeleri olan ve bu öznitelik dosyalara dizeleri depolamak yararlıdır.Aşağıdaki kod bunu göstermektedir:
Structure Worker
' The runtime uses VBFixedString to determine
' if the field should be written out as a fixed size.
<VBFixedString(10)> Public LastName As String
<VBFixedString(7)> Public Title As String
<VBFixedString(2)> Public Rank As String
End Structure
VBFixedArrayAttribute
Use VBFixedArrayAttribute sabit dizilerini bildirmek için.Gibi Visual Basic , diziler dizeleridir varsayılan olarak değişken uzunlukta.Bu öznitelik seri hale getirilmedi ya da veri dosyalarına yazarken kullanışlıdır.
Ayrıca bkz.
Başvuru
Yansıma Kullanarak Özniteliklere Erişme (C# ve Visual Basic)