Varsayılan olarak, Attributetek 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 AllowMultiplegerekir 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.)