सुनिश्चित करें कि आप कर सकते हैं:
var fooList = Activator
.CreateInstance(typeof(List<>)
.MakeGenericType(Foo.GetType()));
समस्या यहां है कि fooList
है object
टाइप करें ताकि आपको अभी भी इसे "उपयोग करने योग्य" प्रकार में डालना होगा। लेकिन यह प्रकार कैसा दिखता है? T
List<T>
(या बल्कि IList<>
) की वस्तुओं को जोड़ने और देखने का समर्थन करने वाली डेटा संरचना के रूप में T
में कॉन्वेंट नहीं है, इसलिए आप List<Foo>
को List<IFoo>
पर Foo: IFoo
पर नहीं डाल सकते हैं। आप इसे IEnumerable<T>
पर डाल सकते हैं जो T
में कॉन्वर्सेंट है।
यदि आप सी # 4.0 का उपयोग कर रहे हैं तो आप fooList
को dynamic
पर कास्टिंग करने पर भी विचार कर सकते हैं ताकि आप इसे कम से कम एक सूची के रूप में उपयोग कर सकें (उदा। जोड़ें, देखो और ऑब्जेक्ट हटाएं)।
इस सब और तथ्य को ध्यान में रखते हुए, कि आपके पास रनटाइम पर प्रकार बनाने के दौरान किसी भी संकलन-समय की सुरक्षा नहीं है, बस List<object>
का उपयोग करके शायद इस मामले में जाने का सबसे अच्छा/सबसे व्यावहारिक तरीका है।
आपको कुछ भी 'सूची
@ Flynn1179, मुझे देखने दो कि आप इसे कैसे करते हैं। – xport
'सूची