मुझे समस्या है कि ऑब्जेक्ट "oListType01" प्रकार के प्रकार < MyClass01> बनाने के बाद और इसे "ऑब्जेक्ट" प्रकार के अन्य ओबजेट "oObjectType" को असाइन करने के बाद मैं किसी और फ़ंक्शन "ElementAt (1)" तक नहीं पहुंच सकता। मैंने प्रतिबिंब का उपयोग करके कोशिश की लेकिन मुझे हमेशा "आमंत्रण" विधि में अपवाद (पैरामीटर संघर्ष) मिल रहा है। क्या कोई जानता है क्यों? मिलानप्रतिबिंब के साथ सूची <T> की विस्तार विधि "ElementAt" को कैसे कॉल करें?
MyClass01 oMy1 = new MyClass01();
oMy1._ID = "1";
MyClass01 oMy2 = new MyClass01();
oMy2._ID = "3";
IList<MyClass01> oListType01 = new List<MyClass01>();
oListType01.Add(oMy1);
oListType01.Add(oMy2);
object oObjectType = new object();
oObjectType = oListType01;
यहाँ से fowrads (ऊपर की ओर वास्तविक मामले में अलग समारोह कॉल में होता है) केवल वस्तु oObjectType उपलब्ध है। वीएस oObjectType में दो तत्व दिखाता है जो मैं प्रति प्रतिबिंब तक पहुंचना चाहता हूं।
MethodInfo mInfo = typeof(System.Linq.Enumerable).GetMethod("ElementAt").MakeGenericMethod(typeof(object));
object oSingleObject = mInfo.Invoke(oObjectType, new object[] { 1 });
आप इसे किसी ऑब्जेक्ट में पहली जगह क्यों निर्दिष्ट कर रहे हैं? यदि आपको किसी कारण से जाना है, और यदि आप संकलन-समय पर जानते हैं कि सूची में हमेशा MyClass01 उदाहरण शामिल होने जा रहे हैं, तो आप इसे वापस सूची पर क्यों नहीं डालते हैं, जैसे: ((सूची ) oObjectType) .lementAt (1); –
tclem
कृपया "उत्तर" पर एक नज़र डालें जहां मैंने समझाया कि आवेषण में केवल ओओब्जेक्ट टाइप के संदर्भ में उपयोग किया जा सकता है (oListType01 नहीं और MyClass01 नहीं)। – milan