चलो कहते हैं कि मैं एक अंतरफलक है कि कई कई अलग वर्गों को लागू करते हैं:वर्कअराउंड
public interface IHaveObjects
{
object firstObject();
}
(नोट: मैं IHaveObjects का कार्यान्वयन करने वालों के रूप में यह एक सार आधार वर्ग नहीं कर सकते हो सकता है पहले से ही बेस क्लास है।)
अब मैं इंटरफ़ेस में एक नई विधि जोड़ना चाहता हूं, ताकि इंटरफ़ेस के एक कार्यान्वयन के लिए विशेष व्यवहार हो।
public interface IHaveObjects
{
object firstObject();
object firstObjectOrFallback()
{
return firstObject();
}
}
तो इंटरफ़ेस की है कि एक implementor के पास जाकर यह ओवरराइड दे:: आदर्श रूप में मैं कुछ इस तरह करना होगा
public class ObjectHaverPlus : IHaveObjects
{
public override object IHaveObjects.firstObjectOrFallback()
{
return firstObject() ?? getDefault();
}
}
लेकिन यह सी # में मना रहा है एक में एक विधि शरीर प्रदान करने के लिए इंटरफ़ेस, और firstObjectOrFallback()
की परिभाषा में ड्रॉप करने के लिए मैं IHaveObjects
के प्रत्येक एकल कार्यान्वयनकर्ता से जाने से बचना चाहता हूं। (कल्पना करें कि सैकड़ों या हजारों हैं)
क्या बहुत सारे कॉपी पेस्ट के बिना ऐसा करने का कोई तरीका है?
उस विशेष मामले के लिए दूसरा इंटरफ़ेस क्यों न बनाएं? आपके पास कक्षाओं की एकाधिक विरासत नहीं हो सकती है, लेकिन आप कई इंटरफेस को कार्यान्वित कर सकते हैं। – Tim