मेरे पास दो वर्ग, एक बेस क्लास और एक बाल वर्ग है। आधार वर्ग में मैं एक सामान्य आभासी विधि को परिभाषित:अजीब जेनरिक संकलन त्रुटि
protected virtual ReturnType Create<T>() where T : ReturnType {}तो मेरे बच्चे को कक्षा में
मैं यह करने के लिए प्रयास करें:
The type 'T' cannot be used as type parameter 'T' in the generic type or method 'Create()'. There is no boxing conversion or type parameter conversion from 'T' to 'ReturnType'.
:
protected override ReturnTypeChild Create<T>() // ReturnTypeChild inherits ReturnType { return base.Create<T> as ReturnTypeChild; }
दृश्य स्टूडियो इस अजीब त्रुटि देता है बच्चे के ओवरराइड पर जहां क्लॉज दोहराता है उसे दोहराता है:
Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly
तो मैं यहाँ क्या गलत कर रहा हूँ?
क्या इसे 'चाइल्ड चिड़ियाघर() 'ओवरराइड किया जाना चाहिए? क्या आप उचित नाम दे सकते हैं? फू और बार मेरे सिर को चोट पहुंचाते हैं। –
Kobi
और इसे वापस आधार नहीं होना चाहिए। Foo BarChild() ;? –
GenericTypeTea
आपके कोड में सभी प्रकार की समस्याएं हैं (उदा। आपकी ओवरराइड विधि में इसका सामान्य पैरामीटर गुम है, आपके रिटर्न स्टेटमेंट में गलत स्थान पर माता-पिता हैं)। यदि आप अपनी समस्या का न्यूनतम प्रजनन करते हैं तो सभी उपयोगी मुद्दों को ठीक करने के लिए आपको उपयोगी उत्तर मिलेंगे। – kvb