2012-07-16 25 views
7

संभव नहीं है (अलग-अलग नामों को छोड़कर) एक ही नाम के साथ कई सामान्य तरीकों के लिए लेकिन विभिन्न इंटरफ़ेस को कार्यान्वित करना?एक ही नाम के साथ दो सामान्य तरीकों

public IList<T> List<T>() where T : class, IMyInterface1 
{ 

    return mylist 
} 

public IList<T> List<T>() where T : class, IMyInterface2 
{ 

    return mylist 
} 

धन्यवाद,

उत्तर

10

नहीं, आप सामान्य प्रकार constaints द्वारा बस ओवरलोड नहीं कर सकते। आप टाइप पैरामीटर के संख्या द्वारा अधिभारित कर सकते हैं, लेकिन उनकी बाधाओं पर नहीं।

यदि आप कार्यान्वित कर रहे हैं तो एक इंटरफ़ेस आप स्पष्ट इंटरफ़ेस कार्यान्वयन का उपयोग कर सकते हैं - अन्यथा मैं केवल अलग-अलग नामों का उपयोग करने का सुझाव दूंगा। मुझे अक्सर पता चलता है कि अलग-अलग नामों का उपयोग करके ईमानदार होने के बावजूद चीज़ें स्पष्ट होती हैं।

ध्यान रखें कि आपके द्वारा दिया गया उदाहरण प्राकृतिक अस्पष्टता पेश करता है - अगर आप दोनों इंटरफेस लागू करते हैं तो आप क्या कहेंगे?

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