için bu özelliği eklemek emin olun Attribute
s vb tek bir alan/mülk/yalnızca bir kez uygulanan sınırlıdır. , Açıkça true
için AllowMultiple
ayarlamanız gerekir diğerleri de belirtildiği gibi
[AttributeUsageAttribute(..., AllowMultiple = false)]
public abstract class Attribute : _Attribute
nedenle, tüm alt sınıflar aynı şekilde sınırlıdır ve aynı özelliğin birden fazla örneğini gerektirir olmalıdır: Sen definition of the Attribute
class on MSDN bu anlaşılıyor :
[AttributeUsage(..., AllowMultiple = true)]
public class MyCustomAttribute : Attribute
birden kullanımlarını izin nitelikler üzerinde you should also override the TypeId
property özellikleri böyle PropertyDescriptor.Attributes
iş olarak beklendiği gibi olmasını sağlamak için. Bunu yapmanın en kolay yolu nitelik örneğini kendisi dönmek için bu özelliği uygulamaktır:
[AttributeUsage(..., AllowMultiple = true)]
public class MyCustomAttribute : Attribute
{
public override object TypeId
{
get
{
return this;
}
}
}
(bu yanıtı yayınlama diğerlerini yanlış, ama bu daha kapsamlı/kanonik cevaptır çünkü çünkü.)
Sadece meraklı - neden bir "mühürlü" sınıf? –
Microsoft, mümkün olduğunda sızdırmazlık özellik sınıflarını önerir: http://msdn.microsoft.com/en-us/library/2ab31zeh.aspx –
Neden mühürlenmiş? Kısaca: Nitelik aramasını daha hızlı yapar ve başka hiçbir etkisi yoktur. –