Aracılığıyla paylaş


Ortak Öznitelikler (Visual Basic)

Bu konuda, Visual Basic programlarında en yaygın olarak kullanılan öznitelikler açıklanmaktadır.

Genel Öznitelikler

Özniteliklerin çoğu sınıflar veya yöntemler gibi belirli dil öğelerine uygulanır; ancak bazı öznitelikler geneldir; bütün bir derleme veya modül için geçerlidir. Örneğin, AssemblyVersionAttribute özniteliği sürüm bilgilerini bir derlemeye eklemek için kullanılabilir, örneğin:

<Assembly: AssemblyVersion("1.0.0.0")>

Genel öznitelikler, herhangi bir üst düzey Imports deyimden sonra ve herhangi bir tür, modül veya ad alanı bildiriminden önce kaynak kodunda görünür. Genel öznitelikler birden çok kaynak dosyada görünebilir, ancak dosyaların tek bir derleme geçişinde derlenmesi gerekir. Visual Basic projelerinde genel öznitelikler genellikle AssemblyInfo.vb dosyasına konur (Visual Studio'da proje oluşturduğunuzda dosya otomatik olarak oluşturulur).

Derleme öznitelikleri, bir derleme hakkında bilgi sağlayan değerlerdir. Bunlar aşağıdaki kategorilere ayrılır:

  • Derleme kimliği özellikleri

  • Bilgi öznitelikleri

  • Assembly manifest öznitelikleri

Derleme Kimliği Öznitelikleri

Bir derlemenin kimliğini üç öznitelik (varsa tanımlayıcı bir adla) belirler: ad, sürüm ve kültür. Bu öznitelikler derlemenin tam adını oluşturur ve kodda başvururken gereklidir. Öznitelikleri kullanarak derlemenin sürümünü ve kültürünü ayarlayabilirsiniz. Ancak, derleme bildirimini içeren dosyaya göre derleme oluşturulduğunda ad değeri derleyici, Derleme Bilgileri İletişim Kutusu'ndaki Visual Studio IDE veya Derleme Bağlayıcısı (Al.exe) tarafından ayarlanır. AssemblyFlagsAttribute özniteliği, derlemenin birden çok kopyasının birlikte bulunup bulunamayacağını belirtir.

Aşağıdaki tabloda kimlik öznitelikleri gösterilmektedir.

Özellik Amaç
AssemblyName Bir derlemenin kimliğini tam olarak açıklar.
AssemblyVersionAttribute Derlemenin sürümünü belirtir.
AssemblyCultureAttribute Derlemenin hangi kültürü desteklediğini belirtir.
AssemblyFlagsAttribute Derlemenin aynı bilgisayarda, aynı işlemde veya aynı uygulama etki alanında yan yana yürütmeyi destekleyip desteklemediğini belirtir.

Bilgi Öznitelikleri

Bir derleme için ek şirket veya ürün bilgileri sağlamak için bilgi özniteliklerini kullanabilirsiniz. Aşağıdaki tabloda ad alanında tanımlanan bilgi öznitelikleri gösterilmektedir System.Reflection .

Özellik Amaç
AssemblyProductAttribute Derleme bildirimi için ürün adını belirten özel bir öznitelik tanımlar.
AssemblyTrademarkAttribute Bir derleme bildirimi için ticari marka belirten özel bir öznitelik tanımlar.
AssemblyInformationalVersionAttribute Derleme bildirimi için bilgilendirme sürümünü belirten özel bir öznitelik tanımlar.
AssemblyCompanyAttribute Derleme bildirimi için şirket adını belirten özel bir öznitelik tanımlar.
AssemblyCopyrightAttribute Derleme bildirimi için telif hakkı belirten özel bir öznitelik tanımlar.
AssemblyFileVersionAttribute Derleyiciye Win32 dosya sürümü kaynağı için belirli bir sürüm numarasını kullanma talimatı verir.
CLSCompliantAttribute Derlemenin Ortak Dil Belirtimi (CLS) ile uyumlu olup olmadığını gösterir.

Derleme Bildirimi Öznitelikleri

Derleme bildiriminde bilgi sağlamak için derleme bildirimi özniteliklerini kullanabilirsiniz. Buna başlık, açıklama, varsayılan diğer ad ve yapılandırma dahildir. Aşağıdaki tabloda, System.Reflection ad alanında tanımlanan derleme bildirimi öznitelikleri gösterilmektedir.

Özellik Amaç
AssemblyTitleAttribute Derleme bildirimi için bir derleme başlığı belirten özel bir öznitelik tanımlar.
AssemblyDescriptionAttribute Bir derleme bildirimi için derleme açıklaması belirten özel bir öznitelik tanımlar.
AssemblyConfigurationAttribute Derleme bildirimi için bir derleme yapılandırmasını (perakende veya hata ayıklama gibi) belirten özel bir öznitelik tanımlar.
AssemblyDefaultAliasAttribute Derleme manifestosu için dostça bir varsayılan diğer ad tanımlar

Eski Öznitelik

Obsolete özniteliği, bir program varlığını artık kullanılması önerilmeyen bir varlık olarak işaretler. Kullanım dışı olarak işaretlenen bir varlığın her kullanımı, özniteliğin nasıl yapılandırıldığına bağlı olarak bir uyarı veya hata oluşturur. Ö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

Bu örnekte Obsolete özniteliği, A sınıfına ve B.OldMethod yöntemine uygulanır. B.OldMethod üzerine uygulanan öznitelik oluşturucusunun ikinci bağımsız değişkeni true olarak ayarlandığı için, bu yöntem bir derleyici hatasına neden olurken, sınıf A kullanıldığında sadece bir uyarı verecektir. B.NewMethodAncak çağrısı hiçbir uyarı veya hata üretmez.

Öznitelik oluşturucusunun ilk bağımsız değişkeni olarak sağlanan dize, uyarı veya hatanın parçası şeklinde 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()

Sınıf A için iki uyarı oluşturulur: biri sınıf başvurusunun bildirimi için, diğeri de sınıf oluşturucu için.

Obsolete Özniteliği bağımsız değişkenler olmadan kullanılabilir, ancak öğenin neden kullanım dışı olduğu ve bunun yerine ne kullanılacağı hakkında bir açıklama eklemek önerilir.

özniteliği Obsolete tek kullanımlık bir özniteliktir ve özniteliklere izin veren herhangi bir varlığa uygulanabilir. Obsolete , için ObsoleteAttributebir diğer addır.

Koşullu Öznitelik

özniteliği, Conditional bir yöntemin yürütülmesini ön işleme tanımlayıcıya bağımlı hale getirir. Conditional özniteliği için ConditionalAttributebir diğer addır ve bir yönteme veya öznitelik sınıfına uygulanabilir.

Bu örnekte, Conditional programa özgü tanılama bilgilerinin görüntülenmesini etkinleştirmek veya devre dışı bırakmak için bir yönteme uygulanır:

#Const TRACE_ON = True
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

TRACE_ON Tanımlayıcı tanımlanmamışsa hiçbir izleme çıkışı görüntülenmez.

Conditional Özniteliği genellikle hata ayıklama derlemeleri için izleme ve günlüğe kaydetme özelliklerini etkinleştirmek için tanımlayıcıyla birlikte DEBUG kullanılır, ancak sürüm derlemelerinde kullanılamaz, örneğin:

<Conditional("DEBUG")>
Shared Sub DebugMethod()

End Sub

Koşullu olarak işaretlenmiş bir yöntem çağrıldığında, belirtilen ön işleme simgesinin varlığı veya yokluğu çağrının dahil edilip edilmediğini belirler. Simge tanımlanmışsa çağrı eklenir; aksi takdirde çağrı atlanır. Conditional kullanmak, #if…#endif blokları içinde yöntemleri kapsamanın daha temiz, daha zarif ve daha az hataya açık bir alternatifidir, örneğin:

#If DEBUG Then
    Sub ConditionalMethod()
    End Sub
#End If

Koşullu yöntem, bir sınıf veya yapı bildiriminde bir yöntem olmalı ve dönüş değerine sahip olmamalıdır.

Birden Çok Tanımlayıcı Kullanma

Bir yöntemin birden çok Conditional özniteliği varsa, koşullu simgelerden en az biri tanımlanmışsa yöntem çağrısı eklenir (başka bir deyişle, simgeler OR işleci kullanılarak mantıksal olarak birbirine bağlanır). Bu örnekte, A veya B varlığının bir yöntem çağrısıyla sonuçlanacağı anlamına gelir.

<Conditional("A"), Conditional("B")>
Shared Sub DoIfAorB()

End Sub

AND işlecini kullanarak sembolleri mantıksal olarak bağlamanın etkisini elde etmek için seri koşullu yöntemler tanımlayabilirsiniz. Örneğin, aşağıdaki ikinci yöntem yalnızca hem A hem de B tanımlandığında yürütülü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

Öznitelik Sınıflarıyla Koşullu Kullanma

Özniteliği bir Conditional öznitelik sınıfı tanımına da uygulanabilir. Bu örnekte, özel öznitelik Documentation yalnızca DEBUG tanımlandığında meta veriye bilgi 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

Arayan Bilgisi Öznitelikleri

Arayan Bilgisi özniteliklerini kullanarak, bir yönteme çağıran hakkında bilgi edinebilirsiniz. Kaynak kodun dosya yolunu, kaynak kodundaki satır numarasını ve çağıranın üye adını alabilirsiniz.

Üye çağrıcı bilgilerini almak için isteğe bağlı parametrelere uygulanan öznitelikleri kullanırsınız. İsteğe bağlı her parametre bir varsayılan değer belirtir. Aşağıdaki tabloda, System.Runtime.CompilerServices ad alanında tanımlanan Arayan Bilgilerine ait öznitelikler listelenir.

Özellik Açıklama Türü
CallerFilePathAttribute Çağıranı içeren kaynak dosyanın tam yolu. Bu, derleme zamanındaki yoldur. String
CallerLineNumberAttribute Yönteminin çağrıldığı kaynak dosyadaki satır numarası. Integer
CallerMemberNameAttribute Çağıranın yöntem adı veya özellik adı. Daha fazla bilgi için bkz . Arayan Bilgileri (Visual Basic). String
CallerArgumentExpressionAttribute Çağıran tarafından bağımsız değişken için kullanılan ifade. Daha fazla bilgi için bkz . Arayan Bilgileri (Visual Basic). String

Arayan Bilgisi öznitelikleri hakkında daha fazla bilgi için bkz. Arayan Bilgileri (Visual Basic).

Visual Basic Öznitelikleri

Aşağıdaki tabloda Visual Basic'e özgü öznitelikler listeleniyor.

Özellik Amaç
ComClassAttribute Derleyiciye sınıfın BIR COM nesnesi olarak kullanıma sunulacak olduğunu gösterir.
HideModuleNameAttribute Modül üyelerine yalnızca modül için gereken nitelik kullanılarak erişilmesine izin verir.
VBFixedStringAttribute Dosya girişi ve çıkış işlevleriyle kullanılmak üzere bir yapıdaki sabit uzunlukta bir dizenin boyutunu belirtir.
VBFixedArrayAttribute Dosya girişi ve çıkış işlevleriyle kullanılmak üzere bir yapıdaki sabit dizinin boyutunu belirtir.

COMClassAttribute

Visual Basic'ten COM bileşenleri oluşturma işlemini basitleştirmek için kullanın COMClassAttribute . COM nesneleri .NET Framework derlemelerinden önemli ölçüde farklıdır ve olmadan COMClassAttribute, Visual Basic'ten COM nesnesi oluşturmak için birkaç adımı izlemeniz gerekir. ile COMClassAttributeişaretlenmiş sınıflar için, derleyici bu adımların çoğunu otomatik olarak gerçekleştirir.

HideModuleNameAttribute

HideModuleNameAttribute sadece modül için gerekli nitelik kullanılarak modül üyelerine erişilmesine izin verin.

VBFixedStringAttribute

Visual Basic'i sabit uzunlukta bir dize oluşturmaya zorlamak için kullanın VBFixedStringAttribute . Dizeler varsayılan olarak değişken uzunluktadır ve bu öznitelik, dizeleri dosyalara depolarken kullanışlıdır. Aşağıdaki kod bunu gösterir:

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

Boyutu sabit dizileri bildirmek için kullanın VBFixedArrayAttribute . Visual Basic dizeleri gibi diziler de varsayılan olarak değişken uzunluktadır. Bu öznitelik, dosyaları serileştirirken veya dosyalara veri yazarken kullanışlıdır.

Ayrıca bakınız