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 rakitan atau modul. Misalnya, atribut AssemblyVersionAttribute 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 Imports tingkat atas 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 yang memberin informasi tentang rakitan. Pekerjaan tersebut termasuk dalam salah satu kategori berikut:

  • Atribut identitas rakitan

  • Atribut informasi

  • Atribut manifes rakitan

Atribut Identitas Rakitan

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

Tabel berikut ini berisi daftar atribut default.

Atribut Tujuan
AssemblyName Sepenuhnya 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 Informasi

Anda dapat menggunakan atribut informasi untuk memberi informasi perusahaan atau produk tambahan untuk perakitan. Tabel berikut ini memperlihatkan atribut informasi yang ditentukan dalam namespace System.Reflection.

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

Atribut Manifes Rakitan

Anda dapat menggunakan atribut manifes rakitan untuk memberi informasi dalam manifes rakitan. Ini termasuk judul, deskripsi, alias default, dan konfigurasi. Tabel berikut ini memperlihatkan atribut informasi yang ditentukan dalam namespace System.Reflection.

Atribut Tujuan
AssemblyTitleAttribute Menentukan atribut kustom yang menentukan nama rakitan untuk manifes rakitan.
AssemblyDescriptionAttribute Menentukan atribut kustom yang menentukan deskripsi rakitan untuk manifes rakitan.
AssemblyConfigurationAttribute Menentukan atribut kustom yang menentukan konfigurasi rakitan (seperti ritel atau debug) untuk manifes rakitan.
AssemblyDefaultAliasAttribute Menentukan 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 ini, atribut Obsolete diterapkan ke kelas A dan ke metode B.OldMethod. Karena argumen kedua dari konstruktor atribut yang diterapkan ke B.OldMethod diatur ke true, metode ini akan menyebabkan compiler error, sedangkan menggunakan kelas A hanya akan 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 menyertakan penjelasan mengapa item usang 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

Jika pengidentifikasi TRACE_ON tidak ditentukan, tidak ada output jejak yang akan ditampilkan.

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

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

End Sub

Saat metode yang ditandai sebagai kondisi dipanggil, kehadiran atau tidak adanya simbol prapemrosesan 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 lebih tidak rawan kesalahan untuk mengapit metode di dalam blok #if…#endif, seperti ini:

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

Metode bersyarat harus berupa metode dalam kelas atau deklarasi struktur dan tidak boleh memiliki nilai yang dikembalikan.

Menggunakan Beberapa Pengidentifikasi

Jika metode memiliki beberapa atribut Conditional, panggilan ke metode disertakan jika setidaknya salah satu simbol bersyarat ditentukan (dengan kata lain, simbol secara logis ditautkan bersama dengan menggunakan operator OR). Dalam contoh ini, keberadaan 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 menggunakan operator AND, Anda dapat menentukan metode bersyarah serial. 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 Bersyarat dengan Kelas Atribut

Atribut Conditional juga dapat diterapkan ke definisi kelas atribut. Dalam contoh ini, atribut Documentation kustom hanya akan menambah 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 Info Pemanggil

Dengan menggunakan atribut Info Pemanggil, Anda dapat memperoleh informasi tentang pemanggil ke suatu metode. Anda mendapatkan 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 Pemanggil yang ditentukan di namespace layanan System.Runtime.CompilerServices:

Atribut Deskripsi Jenis
CallerFilePathAttribute Jalur lengkap file sumber yang berisi pemanggil. Ini adalah jalur file 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 Pemanggil (Visual Basic). String
CallerArgumentExpressionAttribute Ekspresi yang digunakan oleh pemanggil untuk argumen. Untuk informasi selengkapnya, lihat Informasi Pemanggil (Visual Basic). String

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

Atribut Visual Basic

Tabel berikut mencantumkan atribut yang khusus untuk Visual Basic.

Atribut Tujuan
ComClassAttribute Menunjukkan kepada compiler 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 string panjang 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, compiler melakukan banyak langkah ini secara otomatis.

HideModuleNameAttribute

Gunakan HideModuleNameAttribute untuk memungkinkan anggota modul diakses hanya 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 yang sama:

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 menserialisasikan atau menulis data ke file.

Lihat juga