A
List<A>
, B
को List<B>
आदि पर सही ढंग से जोड़ने के लिए मैं इस स्निपेट को कैसे बदलूं?सूची <T> सूची में टी को जोड़ने के लिए कैसे करें <T> मास्करेड 'गतिशील' और टी 'ऑब्जेक्ट' के रूप में?
// someChild's actual type is A
object someChild = GetObject();
// collection's actual type is List<A> though method below returns object
dynamic list = GetListFromSomewhere(...);
// code below throws a RuntimeBinderException
list.Add(somechild);
अपवाद है, क्योंकि जबकि Add()
बांधने की मशीन द्वारा पाया जाता है, यह dynamic
अधिभार संकल्प में विफल रहता है, जिसमें से गुजरता है। प्रतिबिंब का उपयोग करने के लिए उपरोक्त को बदलने के लिए, या कम से कम इसे कम करने के लिए पसंद नहीं करते हैं। मेरे पास और List<A>
प्रत्येक के लिए System.Type
के उदाहरण तक पहुंच है। उपरोक्त कोड वाली कक्षा या विधि स्वयं सामान्य नहीं है।