Bagikan melalui


Atribut Umum (Visual Basic)

Topik ini menjelaskan atribut yang paling umum digunakan dalam program Visual Basic.

Atribut Global

Sebagian besar atribut diterapkan ke elemen bahasa tertentu seperti kelas atau metode; namun, beberapa atribut bersifat global—berlaku untuk seluruh perakitan atau modul. Misalnya, AssemblyVersionAttribute atribut dapat digunakan untuk menyematkan informasi versi ke dalam rakitan, seperti ini:

<Assembly: AssemblyVersion("1.0.0.0")>

Atribut global muncul dalam kode sumber setelah pernyataan tingkat atas Imports dan sebelum deklarasi jenis, modul, atau namespace apa pun. Atribut global dapat muncul dalam beberapa file sumber, tetapi file harus dikompilasi dalam satu pass kompilasi. Untuk proyek Visual Basic, atribut global umumnya dimasukkan ke dalam file AssemblyInfo.vb (file dibuat secara otomatis saat Anda membuat proyek di Visual Studio).

Atribut rakitan adalah nilai-nilai yang menyediakan informasi tentang rakitan. Mereka termasuk dalam kategori berikut:

  • Atribut identitas perakitan

  • Atribut informasi

  • Atribut manifes perakitan

Atribut Identitas Rakitan

Tiga atribut (dengan nama yang kuat, jika berlaku) menentukan identitas sebuah assemblai: nama, versi, dan kultur. Atribut ini membentuk nama lengkap assembly dan diperlukan saat Anda mereferensikannya dalam kode. Anda dapat mengatur versi dan kultur assembly menggunakan atribut. Namun, nilai nama diatur oleh pengkompilasi, IDE Visual Studio di Kotak Dialog Informasi Perakitan, atau Assembly Linker (Al.exe) saat perakitan dibuat, berdasarkan file yang berisi manifes perakitan. Atribut AssemblyFlagsAttribute menentukan apakah beberapa salinan rakitan dapat berdampingan.

Tabel berikut menunjukkan atribut identitas.

Karakteristik Tujuan
AssemblyName Secara lengkap menjelaskan identitas rakitan.
AssemblyVersionAttribute Menentukan versi rakitan.
AssemblyCultureAttribute Menentukan budaya mana yang didukung rakitan.
AssemblyFlagsAttribute Menentukan apakah rakitan mendukung eksekusi berdampingan pada komputer yang sama, dalam proses yang sama, atau di domain aplikasi yang sama.

Atribut Informatif

Anda dapat menggunakan atribut informatif untuk memberikan informasi tambahan tentang perusahaan atau produk untuk perakitan. Tabel berikut menunjukkan atribut informasi yang ditentukan dalam ruang nama System.Reflection.

Karakteristik Tujuan
AssemblyProductAttribute Menentukan atribut kustom yang menentukan nama produk untuk manifes perakitan.
AssemblyTrademarkAttribute Menentukan atribut kustom yang mengidentifikasi merek dagang untuk suatu manifes perakitan.
AssemblyInformationalVersionAttribute Menentukan atribut kustom yang menentukan versi informasi untuk manifes perakitan.
AssemblyCompanyAttribute Menentukan atribut kustom yang menentukan nama perusahaan untuk manifes perakitan.
AssemblyCopyrightAttribute Menentukan atribut kustom yang menentukan hak cipta untuk manifes perakitan.
AssemblyFileVersionAttribute Menginstruksikan pengkompilasi untuk menggunakan nomor versi tertentu untuk sumber daya versi file Win32.
CLSCompliantAttribute Menunjukkan apakah rakitan mematuhi Spesifikasi Bahasa Umum (CLS).

Atribut Manifes Perakitan

Anda dapat menggunakan atribut pada manifes perakitan untuk menyampaikan informasi di dalam manifes perakitan. Ini termasuk judul, deskripsi, alias default, dan konfigurasi. Tabel berikut menunjukkan atribut manifes perakitan yang ditentukan dalam System.Reflection namespace.

Karakteristik Tujuan
AssemblyTitleAttribute Menentukan atribut kustom yang menentukan judul rakitan untuk manifes perakitan.
AssemblyDescriptionAttribute Menentukan atribut kustom yang menentukan deskripsi perakitan untuk manifes perakitan.
AssemblyConfigurationAttribute Menentukan atribut kustom yang menentukan konfigurasi rakitan (seperti ritel atau debug) untuk manifes perakitan.
AssemblyDefaultAliasAttribute Mendefinisikan alias default yang ramah untuk manifes perakitan

Atribut Usang

Atribut Obsolete menandai entitas program sebagai entitas yang tidak lagi direkomendasikan untuk digunakan. Setiap penggunaan entitas yang ditandai usang kemudian akan menghasilkan peringatan atau kesalahan, tergantung pada bagaimana atribut dikonfigurasi. Contohnya:

<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

Dalam contoh Obsolete ini atribut diterapkan ke kelas A dan ke metode B.OldMethod. Karena argumen kedua dari konstruktor atribut yang diterapkan pada B.OldMethod diatur ke true, metode ini akan menyebabkan kesalahan pengompilasi, sedangkan menggunakan kelas A hanya menghasilkan peringatan. Namun, memanggil B.NewMethod tidak menghasilkan peringatan atau kesalahan.

String yang disediakan sebagai argumen pertama untuk konstruktor atribut akan ditampilkan sebagai bagian dari peringatan atau kesalahan. Misalnya, saat Anda menggunakannya dengan definisi sebelumnya, kode berikut menghasilkan dua peringatan dan satu kesalahan:

' 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()

Dua peringatan untuk kelas A dihasilkan: satu untuk deklarasi referensi kelas, dan satu untuk konstruktor kelas.

Atribut Obsolete dapat digunakan tanpa argumen, tetapi termasuk penjelasan mengapa item kedaluwarsa dan apa yang harus digunakan sebagai gantinya direkomendasikan.

Atribut Obsolete adalah atribut penggunaan tunggal dan dapat diterapkan ke entitas apa pun yang memungkinkan atribut. Obsolete adalah alias untuk ObsoleteAttribute.

Atribut Bersyarat

Atribut Conditional membuat eksekusi metode bergantung pada pengidentifikasi prapemrosesan. Atribut Conditional adalah alias untuk ConditionalAttribute, dan dapat diterapkan ke metode atau kelas atribut.

Dalam contoh ini, Conditional diterapkan ke metode untuk mengaktifkan atau menonaktifkan tampilan informasi diagnostik khusus program:

#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 Jika pengidentifikasi tidak ditentukan, tidak ada output jejak yang akan ditampilkan.

Atribut Conditional sering digunakan dengan DEBUG pengidentifikasi untuk mengaktifkan fitur pelacakan dan pengelogan untuk build debug tetapi tidak dalam build rilis, seperti ini:

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

End Sub

Ketika metode yang ditandai sebagai bersyariah dipanggil, ada atau tidaknya simbol pra-pemrosesan yang ditentukan menentukan apakah panggilan disertakan atau dihilangkan. Jika simbol ditentukan, panggilan disertakan; jika tidak, panggilan dihilangkan. Menggunakan Conditional adalah alternatif yang lebih bersih, lebih elegan, dan kurang rawan kesalahan untuk merangkum metode di dalam #if…#endif blok, seperti ini:

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

Metode bersyarat harus merupakan metode dalam deklarasi kelas atau struktur dan tidak boleh memiliki nilai pengembalian.

Menggunakan Beberapa Pengidentifikasi

Jika metode memiliki beberapa Conditional atribut, panggilan ke metode disertakan jika setidaknya salah satu simbol kondisional didefinisikan (dengan kata lain, simbol secara logis ditautkan bersama-sama dengan menggunakan operator OR). Dalam contoh ini, kehadiran salah satu A atau B akan menghasilkan panggilan metode:

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

End Sub

Untuk mencapai efek menautkan simbol secara logis dengan menggunakan operator AND, Anda dapat menentukan metode bersyarat berantai. Misalnya, metode kedua di bawah ini hanya akan dijalankan jika keduanya A dan B didefinisikan:

<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

Menggunakan Kondisional dengan Kelas Atribut

Atribut Conditional juga dapat diterapkan ke definisi kelas atribut. Dalam contoh ini, atribut Documentation kustom hanya akan menambahkan informasi ke metadata jika DEBUG ditentukan.

<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

Atribut Informasi Penelepon

Dengan menggunakan atribut Informasi Pemanggil, Anda dapat memperoleh informasi tentang pemanggil suatu metode. Anda dapat memperoleh jalur file kode sumber, nomor baris dalam kode sumber, dan nama anggota pemanggil.

Untuk mendapatkan informasi pemanggil anggota, Anda menggunakan atribut yang diterapkan ke parameter opsional. Setiap parameter opsional menentukan nilai default. Tabel berikut mencantumkan atribut Info Penelepon yang ditentukan di System.Runtime.CompilerServices namespace:

Karakteristik Deskripsi Tipe
CallerFilePathAttribute Jalur lengkap file sumber yang berisi pemanggil. Ini adalah jalur pada waktu kompilasi. String
CallerLineNumberAttribute Nomor baris dalam file sumber tempat metode dipanggil. Integer
CallerMemberNameAttribute Nama metode atau nama properti pemanggil. Untuk informasi selengkapnya, lihat Informasi Penelepon (Visual Basic). String
CallerArgumentExpressionAttribute Ekspresi yang digunakan oleh pemanggil untuk argumen. Untuk informasi selengkapnya, lihat Informasi Penelepon (Visual Basic). String

Untuk informasi selengkapnya tentang atribut Info Penelepon, lihat Informasi Penelepon (Visual Basic).

Atribut Visual Basic

Tabel berikut mencantumkan atribut yang khusus untuk Visual Basic.

Karakteristik Tujuan
ComClassAttribute Menunjukkan kepada pengkompilasi bahwa kelas harus diekspos sebagai objek COM.
HideModuleNameAttribute Memungkinkan anggota modul diakses hanya menggunakan kualifikasi yang diperlukan untuk modul.
VBFixedStringAttribute Menentukan ukuran string panjang tetap dalam struktur untuk digunakan dengan fungsi input dan output file.
VBFixedArrayAttribute Menentukan ukuran array tetap dalam struktur untuk digunakan dengan fungsi input dan output file.

COMClassAttribute

Gunakan COMClassAttribute untuk menyederhanakan proses pembuatan komponen COM dari Visual Basic. Objek COM sangat berbeda dari rakitan .NET Framework, dan tanpa COMClassAttribute, Anda perlu mengikuti sejumlah langkah untuk menghasilkan objek COM dari Visual Basic. Untuk kelas yang ditandai dengan COMClassAttribute, pengkompilasi melakukan banyak langkah ini secara otomatis.

HideModuleNameAttribute

Gunakan HideModuleNameAttribute untuk memungkinkan anggota modul diakses hanya dengan menggunakan kualifikasi yang diperlukan untuk modul.

VBFixedStringAttribute

Gunakan VBFixedStringAttribute untuk memaksa Visual Basic membuat string panjang tetap. String memiliki panjang variabel secara default, dan atribut ini berguna saat menyimpan string ke file. Kode berikut menunjukkan hal ini:

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

Gunakan VBFixedArrayAttribute untuk mendeklarasikan array yang berukuran tetap. Seperti string Visual Basic, array memiliki panjang variabel secara default. Atribut ini berguna saat membuat serialisasi atau menulis data ke file.

Lihat juga