मैं .NET जेनेरिक की अवधारणा को समझने की कोशिश कर रहा हूं और वास्तव में उन्हें अपने कोड में उपयोग करता हूं लेकिन मैं एक समस्या में चल रहा हूं।.NET जेनेरिक विधि प्रश्न
क्या कोई मुझे यह बताने की कोशिश कर सकता है कि निम्न सेटअप संकलित क्यों नहीं करता है?
public class ClassA
{
ClassB b = new ClassB();
public void MethodA<T>(IRepo<T> repo) where T : ITypeEntity
{
b.MethodB(repo);
}
}
public class ClassB
{
IRepo<ITypeEntity> repo;
public void MethodB(IRepo<ITypeEntity> repo)
{
this.repo = repo;
}
}
मैं निम्नलिखित त्रुटि मिलती है:
'iRepo < को टी>' iRepo < से परिवर्तित नहीं कर सकते ITypeEntity>
MethodA एक iRepo < 'DetailType> वस्तु पैरामीटर जहां DetailType ITypeEntity से विरासत के साथ बुलाया जाता है ।
मैं सोचता रहता हूं कि यह संकलित होना चाहिए क्योंकि मैं विधि टाइप के भीतर टी को बाध्य कर रहा हूं, टाइप प्रकार ITypeEntity।
कोई भी विचार या प्रतिक्रिया अत्यंत उपयोगी होगी।
धन्यवाद।
संपादित करें: निक आर का एक अच्छा सुझाव है लेकिन दुर्भाग्य से मेरे संदर्भ में, मेरे पास क्लास जेनेरिक बनाने का विकल्प नहीं है। कक्षा बी हालांकि हो सकता है।
आप प्रथम श्रेणी अप generic'ing रहे हैं 2 भी –
generic'ed जा करने के लिए दुर्भाग्य से मैं ClassA एक सामान्य वर्ग बनाने के लिए विकल्प नहीं है यह एक एएसपी नेट उपयोगकर्ता के रूप में की आवश्यकता होगी नियंत्रण और मैं वास्तव में उस समस्या को समझने की कोशिश नहीं करना चाहता हूं। हालांकि आपके विचार के लिए धन्यवाद। मेरे द्वारा दिए गए सीमित संदर्भ के आधार पर यह बिल्कुल उचित था। –
उस स्थिति में, क्या आपको जेनेरिक का उपयोग करने की आवश्यकता है? यह मुझे समस्या पर हमला करता है क्योंकि क्लासए में क्लासबी प्रकार का ऑब्जेक्ट होता है। पहले जेनरिक के बिना लागू करने की कोशिश करें - यह पर्याप्त हो सकता है। –