Bagikan melalui


Membuat atribut kustom

Anda dapat membuat atribut kustom Anda sendiri dengan menentukan kelas atribut, kelas yang berasal secara langsung atau tidak langsung dari Attribute, yang membuat mengidentifikasi definisi atribut dalam metadata cepat dan mudah. Misalkan Anda ingin menandai jenis dengan nama programmer yang menulis jenis. Anda dapat menentukan kelas atribut kustom Author :

[System.AttributeUsage(System.AttributeTargets.Class |
                       System.AttributeTargets.Struct)
]
public class AuthorAttribute : System.Attribute
{
    private string Name;
    public string Version;

    public AuthorAttribute(string name)
    {
        Name = name;
        Version = "1.0";
    }
}

Nama AuthorAttribute kelas adalah nama atribut, Author, ditambah akhiran Attribute . Ini berasal dari System.Attribute, jadi ini adalah kelas atribut kustom. Parameter konstruktor adalah parameter posisi atribut kustom. Dalam contoh ini, name adalah parameter posisi. Setiap bidang atau properti baca-tulis publik diberi nama parameter. Dalam hal ini, version adalah satu-satunya parameter bernama. Perhatikan penggunaan AttributeUsage atribut untuk membuat Author atribut hanya valid pada kelas dan struct deklarasi.

Anda dapat menggunakan atribut baru ini sebagai berikut:

[Author("P. Ackerman", Version = "1.1")]
class SampleClass
{
    // P. Ackerman's code goes here...
}

AttributeUsage memiliki parameter bernama, AllowMultiple, yang dengannya Anda dapat membuat atribut kustom sekali pakai atau multi-penggunaan. Dalam contoh kode berikut, atribut multi-penggunaan dibuat.

[System.AttributeUsage(System.AttributeTargets.Class |
                       System.AttributeTargets.Struct,
                       AllowMultiple = true)  // Multiuse attribute.
]
public class AuthorAttribute : System.Attribute
{
    string Name;
    public string Version;

    public AuthorAttribute(string name)
    {
        Name = name;

        // Default value.
        Version = "1.0";
    }

    public string GetName() => Name;
}

Dalam contoh kode berikut, beberapa atribut dengan jenis yang sama diterapkan ke kelas.

[Author("P. Ackerman"), Author("R. Koch", Version = "2.0")]
public class ThirdClass
{
    // ...
}

Lihat juga