Özel öznitelikleri oluşturma
Meta verilerdeki öznitelik tanımlarını tanımlamayı hızlı ve kolay hale getiren, doğrudan veya dolaylı olarak öğesinden Attributetüretilen bir sınıf olan öznitelik sınıfını tanımlayarak kendi özel özniteliklerinizi oluşturabilirsiniz. Türleri, türü yazan programcının adıyla etiketlemek istediğinizi varsayalım. Özel Author
bir öznitelik sınıfı tanımlayabilirsiniz:
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct)
]
public class AuthorAttribute : System.Attribute
{
private string Name;
public double Version;
public AuthorAttribute(string name)
{
Name = name;
Version = 1.0;
}
}
Sınıf adı AuthorAttribute
özniteliğin Author
Attribute
adı ve sonektir. öğesinden System.Attribute
türetilir, bu nedenle özel bir öznitelik sınıfıdır. Oluşturucunun parametreleri, özel özniteliğin konumsal parametreleridir. Bu örnekte, name
konumsal bir parametredir. Tüm genel okuma-yazma alanları veya özellikleri parametre olarak adlandırılır. Bu durumda, version
tek adlandırılmış parametredir. özniteliğini AttributeUsage
yalnızca sınıf ve struct
bildirimlerde geçerli hale getirmek için özniteliğinin Author
kullanımına dikkat edin.
Bu yeni özniteliği aşağıdaki gibi kullanabilirsiniz:
[Author("P. Ackerman", Version = 1.1)]
class SampleClass
{
// P. Ackerman's code goes here...
}
AttributeUsage
, AllowMultiple
özel bir özniteliği tek kullanımlı veya çok kullanımlı hale getirebileceğiniz adlandırılmış bir parametresine sahiptir. Aşağıdaki kod örneğinde çok kullanımlı bir öznitelik oluşturulur.
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct,
AllowMultiple = true) // Multiuse attribute.
]
public class AuthorAttribute : System.Attribute
{
string Name;
public double Version;
public AuthorAttribute(string name)
{
Name = name;
// Default value.
Version = 1.0;
}
public string GetName() => Name;
}
Aşağıdaki kod örneğinde, aynı türdeki birden çok öznitelik bir sınıfa uygulanır.
[Author("P. Ackerman"), Author("R. Koch", Version = 2.0)]
public class ThirdClass
{
// ...
}
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin