c# - स्थिर वर्गों को प्रतिबिंब के माध्यम से प्रकार तर्क के रूप में इस्तेमाल किया जा सकता है



.net reflection (1)

जैसा कि बीजे मायर्स की टिप्पणी में बताया गया है, CLR को "स्थिर" वर्गों का कोई ज्ञान नहीं है कंपाइलर त्रुटियां ऐसी चीजें करने से रोकने के लिए होती हैं जो गंभीर समस्याएं पैदा कर सकती हैं। इस तरह की अधिकांश त्रुटियों के आसपास लगभग हमेशा तरीके होते हैं (इस मामले में प्रतिबिंब का उपयोग करते हुए), लेकिन एक पैरामीटर के रूप में स्थैतिक वर्ग को पार करने का प्रयास करते समय त्रुटि यह है कि आप जो कर रहे हैं वह नहीं करना चाहिए, जब तक कि आप बहुत अच्छी तरह से नहीं जानते नतीजे क्या हैं

इस मामले में, आपको अपने आप से पूछना चाहिए, आप एक स्थैतिक वर्ग के पास क्यों जाना चाहते हैं? चूंकि एक स्थिर वर्ग में डेटा या अन्य वस्तुओं का कोई संदर्भ नहीं हो सकता है, इसलिए इसे पास करने का कोई मतलब नहीं है। यदि आपको एक विशिष्ट वर्ग के कार्यों को बिना किसी स्पष्ट संदर्भ के कॉल करने की आवश्यकता है, तो आप इसके तरीकों को लागू करने के लिए प्रतिबिंब का उपयोग कर सकते हैं यहां बताया गया है कि:

प्रतिबिंब के साथ स्थिर तरीकों को शामिल करना

एक प्रकार के पैरामीटर के रूप में एक स्थिर वर्ग का उपयोग करने की कोशिश करते समय, सी # संकलक एक त्रुटि फेंकता है:

var test = new List<Math>();

त्रुटि CS0718: `System.Math ': स्थिर वर्गों को सामान्य तर्क के रूप में उपयोग नहीं किया जा सकता

यह इन सवालों में शामिल किया गया है:

हालांकि, मुझे एहसास हुआ कि मैं प्रतिबिंब के माध्यम से प्रकार बना सकता हूँ, और रनटाइम शिकायत नहीं करेगा:

var test = Activator.CreateInstance(typeof(List<>).MakeGenericType(typeof(Math)));

क्या मैं इसे पूरा करने में ठीक हूं सीएलआर स्तर पर समर्थित है, लेकिन भाषा स्तर पर नहीं?

या यह विशिष्टता का एक भूरा क्षेत्र है, जिसका अर्थ है कि मुझे इन सामान्य निर्माण प्रकारों का उपयोग करने से बचना चाहिए?





clr