सामान्य विधि है में पारित करने के लिए ...सी #: एक सामान्य विधि
public void PrintGeneric2<T>(T test) where T : ITest
{
Console.WriteLine("Generic : " + test.myvar);
}
मैं मुख्य() से फोन कर रहा हूँ ...
Type t = test2.GetType();
PrintGeneric2<t>(test2);
मैं कार्यावधि में प्रकार पैरामीटर प्राप्त करें त्रुटि प्राप्त करें "CS0246: प्रकार या नामस्थान नाम 'टी' नहीं मिला" और "CS1502: सर्वोत्तम अधिभारित विधि मिलान DoSomethingClass.PrintGeneric2 < टी> (टी) में अवैध तर्क हैं"
यह मेरे पिछले प्रश्न से संबंधित है यहाँ : C# : Passing a Generic Object
मैंने पढ़ा है कि जेनेरिक प्रकार को रनटाइम पर प्रतिबिंबित नहीं किया जा सकता है, प्रतिबिंब या methodinfo के उपयोग के बिना, लेकिन मैं इस उदाहरण में ऐसा करने के तरीके पर बहुत स्पष्ट नहीं हूं।
धन्यवाद तुम मुझे प्रबुद्ध अगर कर सकते हैं =)
आपका सुझाव संकलक को टी को सिस्टम के रूप में अनुमान लगाने के लिए मजबूर करेगा। टाइप करें। मुझे नहीं लगता कि रनटाइम मूल्यांकन प्रकार –
@AZ, नहीं, गुजरने के ओपी इरादे को सही ढंग से प्रतिबिंबित करेगा। 'टाइप टी = test2.GetType()' भाग पूरी तरह से अनदेखा करें, इसकी आवश्यकता नहीं है। 'test2' 'ITest' लागू करता है (उसका पिछला प्रश्न देखें)। 'Test2' पास करना, यहां पर्याप्त है। –
पर्याप्त मेला। दूसरे प्रश्न की जांच नहीं की गई, इसलिए मुझे test2 के संदर्भ की कमी थी। मैं अभी भी अपनी धारणा से खड़ा हूं कि ओपी किसी भी तरह रनटाइम पर गतिशील रूप से टी को हल करना चाहता है और यह नहीं है कि –