में जाना जाता है मैं की तरह एक सामान्य इंटरफ़ेस का उपयोग करने की आवश्यकता है लौटने के बाद:समारोह एक सामान्य प्रकार जिसका मूल्य केवल क्रम
public interface IContainer<T>
{
IEnumerable<IContent<T>> Contents { get; }
}
इस इंटरफेस को लागू करने वाली वस्तु निम्नलिखित की तरह एक सामान्य विधि द्वारा दिया जाता है:
IContainer<T> GetContainer<T>(IProperty property);
टाइप T
रन-टाइम तक अज्ञात है।
प्रतिबिंब का उपयोग करके मैं GetContainer<T>
विधि का आह्वान करने और परिणाम प्राप्त करने में सक्षम हूं।
मेरी समस्या यह है कि मुझे नहीं पता कि परिणाम Object
के परिणाम को कैसे समझा जाए (इसलिए मैं इसे IEnumerable
पर नहीं डाल सकता)।
मैं भी इस प्रकार है, लेकिन यह काम नहीं करता है के रूप में कास्टिंग (यह कहते हैं, "प्रकार की उम्मीद है") की कोशिश की है: सेवा GetContainer<T>
विधि उजागर कर रहा है
var myContainer = genericMethodInfo.Invoke(
myService,
new object[] { property })
as typeof(IContainer<>).MakeGenericType(type);
जहां type
क्रम प्रकार है, myService
, और property
आवश्यकतानुसार IProperty
प्रकार है।
अद्यतन: अपने ब्लॉग में मेरा पूरा समाधान देखें: http://stefanoricciardi.com/2010/02/18/generics-with-type-uknown-at-compile-time/
संभव डुप्लिकेट (http://stackoverflow.com/questions/232535/how- उपयोग करने के लिए प्रतिबिंब-टू-कॉल-जेनेरिक-विधि) – nawfal