डिफ़ॉल्ट रूप से, Attribute
s केवल एक ही क्षेत्र / संपत्ति / आदि के लिए लागू होने तक सीमित हैं। आप इसे 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;
}
}
}
(इस उत्तर को पोस्ट करना इसलिए नहीं कि अन्य गलत हैं, बल्कि इसलिए कि यह अधिक व्यापक / विहित उत्तर है।)