हमारे सॉफ्टवेयर में कई वर्ग हैं जिन्हें गतिशील रूप से प्रतिबिंब के माध्यम से पाया जाना चाहिए। सभी वर्गों में एक विशिष्ट हस्ताक्षर के साथ एक कंस्ट्रक्टर होता है जिसके माध्यम से प्रतिबिंब कोड वस्तुओं को त्वरित करता है।
हालाँकि, जब कोई जाँचता है कि क्या विधि संदर्भित है (उदाहरण के लिए विज़ुअल स्टूडियो कोड लेंस के माध्यम से), तो प्रतिबिंब के माध्यम से संदर्भ को गिना नहीं जाता है। लोग अपने संदर्भों को याद कर सकते हैं और स्पष्ट रूप से अप्रयुक्त तरीकों को हटा सकते हैं (या बदल सकते हैं)।
परावर्तन के माध्यम से बुलाए जाने के लिए हमें किस तरह से चिह्नित / दस्तावेज़ विधियों का उपयोग करना चाहिए?
आदर्श रूप से, विधि को इस तरह से चिह्नित किया जाना चाहिए कि दोनों सहकर्मियों और विज़ुअल स्टूडियो / रोसलिन और अन्य स्वचालित उपकरण 'देखें' कि विधि को प्रतिबिंब के माध्यम से बुलाया जाना है।
मुझे दो विकल्पों का पता है जिनका हम उपयोग कर सकते हैं लेकिन दोनों ही काफी संतोषजनक नहीं हैं। चूंकि विज़ुअल स्टूडियो को संदर्भ नहीं मिल सकते हैं:
- कस्टम विशेषता का उपयोग करें और इस विशेषता के साथ निर्माता को चिह्नित करें।
- एक समस्या यह है कि गुण गुण एक विधि संदर्भ नहीं हो सकते हैं, इसलिए निर्माणकर्ता अभी भी 0 संदर्भ होने के रूप में दिखाएगा।
- कस्टम विशेषता से परिचित सहकर्मी संभवतः इसकी उपेक्षा नहीं करेंगे।
- मेरे वर्तमान दृष्टिकोण का एक लाभ यह है कि प्रतिबिंब भाग को कॉल करने वाले निर्माता को खोजने के लिए विशेषता का उपयोग कर सकता है।
- दस्तावेज़ के लिए टिप्पणियों का उपयोग करें कि एक विधि / निर्माता को प्रतिबिंब के माध्यम से बुलाया जाना है।
- स्वचालित उपकरण टिप्पणियों को अनदेखा करते हैं (और सहकर्मी ऐसा भी कर सकते हैं)।
- Xml प्रलेखन टिप्पणियाँ विजुअल स्टूडियो विधि / निर्माणकर्ता के लिए एक अतिरिक्त संदर्भ की गणना करने के लिए इस्तेमाल किया जा सकता है:
चलोMyPlugin
वह वर्ग हो जिसका निर्माता प्रतिबिंब के माध्यम से आह्वान करता है।int
पैरामीटर लेने वाले कंस्ट्रक्टरों के लिए इनवॉइसिंग प्रतिबिंब कोड खोजों को मान लें । निम्नलिखित प्रलेखन बनाता है कि कोड लेंस 1 संदर्भ वाले निर्माता को दिखाता है:
/// <see cref="MyPlugin.MyPlugin(int)"/> is invoked via reflection
कौन से बेहतर विकल्प मौजूद हैं?
एक विधि / निर्माणकर्ता को चिह्नित करने के लिए सबसे अच्छा अभ्यास क्या है जिसे प्रतिबिंब के माध्यम से बुलाया जाना है?