"व्युत्पन्न से हैलो" की अपेक्षा। लेकिन "बेस से हैलो" प्राप्त करना।व्युत्पन्न वर्ग विधि के बजाय बेस क्लास विधि क्यों कहा जाता है?
class Program
{
interface IBase
{
void Method();
}
public class Base: IBase
{
public virtual void Method()
{
Console.WriteLine("Hello from the base.");
}
}
public class Derived : Base
{
public virtual new void Method()
{
Console.WriteLine("Hello from the derived.");
}
}
static void Main(string[] args)
{
IBase x = new Derived();
x.Method();
}
}
तो व्युत्पन्न कक्षा की विधि क्यों नहीं कहा जाता है। और सबसे महत्वपूर्ण बात यह है कि, व्युत्पन्न प्रकार को एक्स कास्टिंग किए बिना कॉल करने के लिए व्युत्पन्न कक्षा विधि कैसे प्राप्त कर सकता हूं?
मेरे वास्तविक एप्लिकेशन में, आईबीएएस के कई अन्य संबंधित तरीके हैं और व्युत्पन्न केवल आईबीएएस में दो विधियों को प्रतिस्थापित करता है।
+10। –
आपको सुझाव दिया गया है कि समाधान निर्माण योग्य नहीं है। कंपाइलर शिकायत करता है कि "सदस्य ओवरराइड नहीं कर सकता है प्रोग्राम.बेस.मेथ() 'क्योंकि यह वर्चुअल, सार, या ओवरराइड चिह्नित नहीं है। – estimpson
मूल विधि को' आभासी 'और व्युत्पन्न विधि' ओवरराइड 'चिह्नित किया जाना चाहिए। –