2010-05-20 15 views
6

सी # .NET सामान्य तरीके और विरासत

public abstract class A 
{ 
    public abstract T MethodB<T>(string s); 
} 

public class C: A 
{ 
    public override DateTime MethodB(string s) 
    { 
    } 
} 

यानी एक आधार वर्ग में एक सामान्य विधि है और फिर एक में है कि विधि के लिए एक विशेष प्रकार का उपयोग सी # .NET में जेनरिक के साथ निम्न करने के लिए क्या यह संभव है उप वर्ग

उत्तर

7

प्रकार पैरामीटर प्रकार के साथ घोषित किया जाना चाहिए, और उपवर्ग अपनी विरासत घोषणा में विशिष्ट प्रकार घोषणा करेंगे:

public abstract class A<T> 
{ 
    public abstract T MethodB(string s); 
} 

public class C: A<DateTime> 
{ 
    public override DateTime MethodB(string s) 
    { 
     ... 
    } 
} 
+0

ठंडा जो धन्यवाद काम करता है। – eaglestorm

1

सं

कारण यह है कि आप केवल कार्यान्वयन प्रदान किया जाएगा एक विशेष मामले के लिए। बेस क्लास के लिए आपको MethodB लागू करने की आवश्यकता है जो किसी भी प्रकार T के लिए काम कर सकता है। यदि आप इसे केवल DateTime के लिए कार्यान्वित करते हैं और यदि कोई कॉल करता है, उदाहरण के लिए, ((A)obj).MethodB<int> तो आपके पास कोई कार्यान्वयन नहीं है जिसका उपयोग किया जा सकता है!

संबंधित मुद्दे