2010-06-16 14 views
5

क्या सी # में एक स्थिर वर्ग, विधि या संपत्ति पर एक विशेषता लागू की जा सकती है? पसंद:सी # में, एक विशेषता एक स्थिर वर्ग, विधि या संपत्ति पर लागू किया जा सकता है?

[MyAttribute] 
public static MyMethods(string str) ... 
+7

अपने आप को आजमाने की आसान चीज़ की तरह लगता है .... क्या आपने कोशिश की और असफल रहा? –

+0

क्या यह '[मेरा]' नहीं होगा? – Kobi

+0

मैं जेसन वेबब की टिप्पणी गूंजता हूं: आपने अभी यह क्यों नहीं किया है? – abelenky

उत्तर

6

वहाँ वास्तव में दो सवाल यहाँ

हैं यह सामान्य रूप में विशेषताओं के लिए संभव है वर्ग के लिए लागू किया जाना है, विधि या गुण?

हाँ विशेषताओं वैध इन निर्माणों (और कई अन्य)

के किसी भी लक्षित कर सकते हैं कि यह एक विशिष्ट विशेषता ऐसा करने के लिए के लिए मान्य है?

यह विशिष्ट विशेषता पर निर्भर करता है। गुण नियंत्रित कर सकते हैं कि कौन सी संरचनाओं को AttributeTargets enum के माध्यम से लागू किया जा सकता है और इसलिए किसी विशिष्ट निर्माण पर एक विशिष्ट विशेषता के लिए इसे अवैध बना दिया जाता है।

उदाहरण के लिए ParamArrayAttribute केवल मापदंडों को लक्षित कर सकते ObsoleteAttribute काफी कुछ भी लक्षित कर सकते हैं, जबकि (विधानसभाओं को छोड़कर और शायद एक अन्य मैं याद कर रहा हूँ)

+0

100k पर बधाई; पी –

+0

@Marc धन्यवाद! अब 200 के लिए :) – JaredPar

+0

हालांकि, यहां तक ​​कि 'विशेषता ट्रेडमार्क' एक * स्थिर * आइटम पर एक विशेषता अमान्य नहीं बना सकता है लेकिन एक * गैर स्थैतिक * एक ही प्रकार में मान्य है ... – Timwi

1

हां। शायद। बस कोशिश करो और देखें।

मुझे आश्चर्य है कि आप इसे क्यों संदेह करेंगे।

2

हां आप स्थैतिक वर्ग, विधि, संपत्ति में विशेषता लागू कर सकते हैं।

उदाहरण:

[MyAttribute("hello")] 
     public static string SayHello(string str) 
     { 
     return str; 
     } 
1

हाँ, यह लागू किया जा सकता।

0

यह विशेषता पर निर्भर करता है, तो वह एक स्थिर वर्ग के लिए आवेदन कर सकते हैं। AttributeTarget देखें। जैसे कि यह पूरी तरह से कानूनी है और गुणों के साथ एक स्थिर वर्ग या विधियों को सजाने की अनुमति है।

संबंधित मुद्दे