निम्नलिखित इंटरफेस पर विचार करें:एक सामान्य इंटरफ़ेस को लागू नई बाधा लापता
public interface IFoo
{
M Bar<M>();
}
कि लागू करने के लिए
class Foo : IFoo
{
public M Bar<M>()
{
return new M();
}
}
साथ काम नहीं करता कोशिश कर रहा है, संकलक शिकायत M
एक new()
बाधा याद आ रही है।
जब मैं
class Foo : IFoo
{
public M Bar<M>() where M : new()
{
return new M();
}
}
यह अभी भी में के रूप में बाधा जोड़ने चाल नहीं करता है, के रूप में Foo.Bar
की कमी अब इंटरफ़ेस विधि की कमी से मेल नहीं खाते (और मैं बदलने में सक्षम नहीं कर रहा हूँ उस)।
documentation for the compiler error CS0425
इस त्रुटि से बचने, यकीन है कि जहां खंड दोनों घोषणाओं में समान होता है बनाने के लिए, या इंटरफ़ेस स्पष्ट रूप से लागू करने के लिए कहते हैं।
यदि "इंटरफ़ेस को स्पष्ट रूप से कार्यान्वित करना" समाधान है: मैं इसे कैसे कर सकता हूं?
ऐसा इसलिए है क्योंकि आपको एक नया वापस करने की आवश्यकता है या आपको कुछ वापस करने की आवश्यकता है जब वापस लौटने के लिए कुछ और नहीं है? क्या डिफ़ॉल्ट (एम) 'पर्याप्त होगा? यह दिए गए जेनेरिक प्रकार के लिए डिफ़ॉल्ट मान देता है, संदर्भों के लिए यह 'शून्य' है। अन्यथा आपको अपना उदाहरण बनाने के लिए अभिव्यक्ति पेड़ या प्रतिबिंब की आवश्यकता होगी। –