Varsayılan olarak, Attribute
tek bir alana / özelliğe / vb. Yalnızca bir kez uygulanmakla sınırlıdır. Bunu, MSDN'deki sınıfın tanımındanAttribute
görebilirsiniz :
[AttributeUsageAttribute(..., AllowMultiple = false)]
public abstract class Attribute : _Attribute
Bu nedenle, diğerlerinin de belirttiği gibi, tüm alt sınıflar aynı şekilde sınırlıdır ve aynı özniteliğin birden çok örneğine ihtiyaç duyarsanız, aşağıdakileri açıkça ayarlamanız AllowMultiple
gerekir true
:
[AttributeUsage(..., AllowMultiple = true)]
public class MyCustomAttribute : Attribute
Birden çok kullanıma izin veren özniteliklerde, gibi özelliklerin beklendiği gibi çalışmasını sağlamak için TypeId
özelliği de geçersizPropertyDescriptor.Attributes
kılmalısınız. Bunu yapmanın en kolay yolu, öznitelik örneğini döndürmek için bu özelliği uygulamaktır:
[AttributeUsage(..., AllowMultiple = true)]
public class MyCustomAttribute : Attribute
{
public override object TypeId
{
get
{
return this;
}
}
}
(Bu cevabı diğerleri yanlış olduğu için değil, daha kapsamlı / kanonik bir cevap olduğu için göndermek.)