2011-02-24 17 views
12

से बेस क्लास प्रॉपर्टी का आह्वान किया जा सकता है मेरे पास एक संपत्ति के साथ बेस क्लास है जिसमें एक सेटर विधि है। क्या व्युत्पन्न वर्ग से बेस क्लास में सेटर को आमंत्रित करने का कोई तरीका है और इसके लिए कुछ और कार्यक्षमता जोड़ें जैसे कि हम बेस कीवर्ड का उपयोग करके अतिरंजित विधियों के साथ करते हैं।सी # व्युत्पन्न कक्षा

क्षमा करें मुझे एक उदाहरण जोड़ा जाना चाहिए था। यहाँ एक उदाहरण है। आशा है कि मैं इसे सही:

public class A 
{ 
    public abstract void AProperty 
    { 
     set 
     { 
      // doing something here 
     } 
    } 
} 

public class B : A 
{ 
    public override void AProperty 
    { 
     set 
     { 
      // how to invoke the base class setter here 

      // then add some more stuff here 
     } 
    } 
} 
+0

क्या आपने वास्तव में स्वयं को आधार पर कॉल करने का प्रयास किया है? –

+4

आपके सभी आधार आपके हैं। बेशक आप यह कर सकते हैं। आप एक सेटटर के अंदर आधार का उपयोग कर सकते हैं। –

+0

क्या आप एक उदाहरण प्रदान कर सकते हैं कि आप क्या करना चाहते हैं? – Vadim

उत्तर

21

संपादित: संशोधित उदाहरण आमंत्रण के आदेश का असर दिखाना चाहिए। एक कंसोल अनुप्रयोग के रूप में संकलित करें।

class baseTest 
{ 
    private string _t = string.Empty; 
    public virtual string t { 
     get{return _t;} 
     set 
     { 
      Console.WriteLine("I'm in base"); 
      _t=value; 
     } 
    } 
} 

class derived : baseTest 
{ 
    public override string t { 
     get { return base.t; } 
     set 
     { 
      Console.WriteLine("I'm in derived"); 
      base.t = value; // this assignment is invoking the base setter 
     } 
    } 
} 

class Program 
{ 

    public static void Main(string[] args) 
    { 
     var tst2 = new derived(); 
     tst2.t ="d"; 
     // OUTPUT: 
     // I'm in derived 
     // I'm in base 
    } 
} 
+0

को मान निर्दिष्ट करते हैं, तो आप वास्तव में यह नहीं कह रहे हैं कि बेस क्लास प्रॉपर्टी 'टी' में सेटर क्या कर रहा है। यदि बेस सेटर 'टी' में कोड की 10 पंक्तियां थीं, तो क्या हम इसे व्युत्पन्न कक्षा से कॉल कर सकते हैं ताकि कोड की उन 10 पंक्तियों को निष्पादित किया जा सके और फिर हम – Shahid

+0

@ शाहिद हां मैं कोड की अतिरिक्त पंक्तियां जोड़ सकें। बेस क्लास सेटर में कोड को \t \t पर सेट करने का प्रयास करें {Console.WriteLine ("मैं आधार में हूं"); _t = value;} और अपने लिए देखें। –

+0

धन्यवाद paolo। मैं इसे नजरअंदाज करने के लिए बेवकूफ रहा हूँ। मैंने अब आपका जवाब स्वीकार कर लिया है – Shahid

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