डिफ़ॉल्ट रूप से, Attributes केवल एक ही क्षेत्र / संपत्ति / आदि के लिए लागू होने तक सीमित हैं। आप इसे MSDN पर वर्ग की परिभाषाAttribute से देख सकते हैं :
[AttributeUsageAttribute(..., AllowMultiple = false)]
public abstract class Attribute : _Attribute
इसलिए, जैसा कि अन्य ने नोट किया है, सभी उपवर्ग एक ही तरीके से सीमित हैं, और आपको एक ही विशेषता के कई उदाहरणों की आवश्यकता होगी, आपको स्पष्ट रूप से सेट AllowMultipleकरने की आवश्यकता है true:
[AttributeUsage(..., AllowMultiple = true)]
public class MyCustomAttribute : Attribute
उन विशेषताओं पर जो कई उपयोगों की अनुमति देती हैं, आपको यहTypeId सुनिश्चित करने के लिए संपत्ति को भी ओवरराइड करना चाहिए कि PropertyDescriptor.Attributes अपेक्षा के अनुरूप काम करें। ऐसा करने का सबसे आसान तरीका उस संपत्ति को लागू करना है जो विशेषता उदाहरण को स्वयं वापस करे:
[AttributeUsage(..., AllowMultiple = true)]
public class MyCustomAttribute : Attribute
{
public override object TypeId
{
get
{
return this;
}
}
}
(इस उत्तर को पोस्ट करना इसलिए नहीं कि अन्य गलत हैं, बल्कि इसलिए कि यह अधिक व्यापक / विहित उत्तर है।)