2012-11-14 19 views
8

कुछ जो ICustomAttributeProvider इंटरफ़ेस लागू करता है, आपको GetCustomAttributes विधि के माध्यम से लागू किए गए कस्टम विशेषताओं को प्राप्त करने की अनुमति देगा। जैसा कि मैं इसे समझता हूं, एक कस्टम विशेषता मूल रूप से एक विशेष श्रेणी ("विशेषता" में समाप्त होती है और Attribute कक्षा को विस्तारित करती है) जिसे उपयुक्त वाक्यविन्यास ([FooAttribute] विधि/कक्षा से पहले) का उपयोग करके विधि या कक्षा जैसी किसी चीज़ पर लागू किया जाता है।/आदि सी # में, उदाहरण के लिए)। लेकिन अगर यह एक कस्टम विशेषता है, तो गैर-कस्टम विशेषता क्या है? मुझे लगता था कि .NET के साथ बंडल किए गए गुण गैर-कस्टम थे, लेकिन GetCustomAttributes मुझे System.ThreadStaticAttribute जैसे गुण भी लौटाता है, जो .NET ढांचे के लिए बहुत महत्वपूर्ण हैं।कस्टम बनाम गैर-कस्टम विशेषताओं?

क्या कोई गैर-कस्टम विशेषता जैसी कोई चीज है, या "कस्टम विशेषता" सिर्फ एक ट्यूटोलॉजी है?

उत्तर

2

मैं अगर निम्न किसी भी प्रासंगिकता है पता नहीं है पाए जाते हैं के बारे में CLI विनिर्देश, लेकिन अगर आप कहते हैं कि

var a = typeof(string).Attributes; 

आप एक झंडे enum प्रकार TypeAttributes कहा जाता है के एक मूल्य मिलता है। शायद ये झंडे प्रकार के "गैर-कस्टम" गुण हैं?

+0

मुझे लगता है कि यह शायद सही है। कस्टम विशेषताएं ऐसी चीजें हैं जो "टाइप विशेषताएँ" नहीं हैं। – Jez

+0

अधिक स्पष्टीकरण के लिए, मैंने इसे एमएसडीएन पर पढ़ा है: * "लगभग सभी प्रतिबिंब वर्गों में उनके साथ जुड़े गुण हो सकते हैं। गुण मानक (सार्वजनिक, निजी, हेल्पस्ट्रिंग) या कस्टम हो सकते हैं।" * – Jez

5

Attribute से प्राप्त होने वाली हर चीज एक कस्टम विशेषता है।

"विशेषता" एक सामान्य शब्द है। असली दुनिया में वस्तुओं में असंख्य गुण हैं। कक्षाएं, सदस्यों और मापदंडों सभी विशेषताओं है कि हम का वर्णन कर सकते हैं - नाम, प्रकार, accessors, सदस्यों की संख्या, विरासत जानकारी, आदि

कस्टम विशेषताओं बातें हैं कि हम कील पर - पहलुओं कि हम वर्णन करने और वर्णन करने के लिए उपयोग करना चाहते हैं, लेकिन जो आंतरिक नहीं हैं।

2

Wikipedia देखें, उद्धृत:

डेवलपर्स विशेषताओं के माध्यम से अपने कोड के लिए मेटाडेटा जोड़ सकते हैं। वहां डेवलपर को दो प्रकार के विशेषताओं, कस्टम और छद्म कस्टम विशेषताओं, और हैं, इन्हें समान वाक्यविन्यास है। कोड में गुण मेटाडेटा उत्पन्न करने के लिए कंपाइलर को संदेश हैं। सीआईएल में, मेटाडाटा विरासत संशोधक, स्कोप संशोधक, और लगभग कुछ भी जो या तो ऑपकोड या स्ट्रीम नहीं है, को विशेषताओं के रूप में भी संदर्भित किया जाता है।

भी देखें विस्तार मेटाडाटा, जहां संदर्भ अवधि "कस्टम" गुण (http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf में जैसे I.9.7)

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