मैं सी # में एक अंतरफलक है कि एक विधि है जो हमेशा लागू करने वर्ग की एक वस्तु देता है, इस प्रकार परिभाषित करता है बनाना चाहते:क्या मैं एक कार्यान्वयन वर्ग को अपने स्वयं के प्रकार की वस्तु वापस करने के लिए मजबूर कर सकता हूं?
public interface IParser {
IParser Parse(string s);
}
public class Parser : IParser {
public Parser Parse(string s) {
return new Parser(s);
}
}
मैं अपनी ही प्रकार का ऑब्जेक्ट वापस जाने के लिए एक को लागू करने के लिए मजबूर वर्ग कर सकते हैं? यदि संभव हो, तो कैसे? या जेनिक्स यहाँ जवाब है?
एनबी: कोड सिर्फ एक उदाहरण है, न कुछ है कि चलाने के लिए माना जाता है।
आपने मुझे बहुत उत्सुक बना दिया है: आप ऐसा करने की कोशिश क्यों कर रहे हैं? आम तौर पर, एक इंटरफ़ेस को परिभाषित करने का बिंदु यह है कि क्लाइंट कोड इस बात पर भरोसा कर सकता है कि किसी ऑब्जेक्ट को किसी ऑब्जेक्ट पर परिभाषित किए बिना किसी ऑब्जेक्ट पर परिभाषित किया गया है या उस वस्तु का ठोस प्रकार क्या है। यह ओओपी की बड़ी ताकत है। यह क्या है कि आप ऐसा करके पूरा करने की कोशिश कर रहे हैं? –
खैर, मेरा विचार था कि इस इंटरफ़ेस को आप हमेशा भरोसा कर सकते हैं कि इंटरफ़ेस को लागू करने वाले वर्गों में यह विधि होगी और वे हमेशा अपना स्वयं का प्रकार वापस कर देंगे। लेकिन जैसा कि आप कहते हैं, यह शायद सबसे अच्छा ओओ डिज़ाइन नहीं हो सकता है और मैं इसे एक विधि के लिए त्यागने जा रहा हूं जो इसके बजाय इंटरफ़ेस प्रकार देता है। – Cros