2011-12-31 21 views
5

मैं निम्नलिखित आधार वर्ग है:ओवरराइड नहीं कर सकते संपत्ति की रक्षा की सेट

abstract class Base 
{ 
public abstract object Var 
{ 
    get; 
    protected set; 
} 
} 

और यह व्युत्पन्न वर्ग:

Cannot change access modifier when overriding 'protected' inherited member 'Var'

मैं:

class Derived : Base 
{ 
public override object Var 
{ 
    get {//code here 
    } 
    set {//code here -- I get error here! 
    } 
} 
} 

लेकिन मैं इस त्रुटि हो रही है सेट से पहले protected और private कीवर्ड जोड़ने का प्रयास किया लेकिन इससे मदद नहीं मिली। मैं यह कैसे तय करुं?

अद्यतन:
आधार वर्ग सुनिश्चित करें कि उपवर्गों निर्माण समय में Var लिए कोई मान प्रदान करना चाहिए। तो मुझे बेस क्लास में घोषित सेटटर की आवश्यकता है।
वैकल्पिक रूप से, मैं ऐसा करने के लिए एक निजी सदस्य चर घोषित कर सकता हूं और सेटटर को हटा सकता हूं, लेकिन यह एक विकल्प नहीं है जैसा कि here पर चर्चा की गई है।

उत्तर

8

समस्या अपने व्युत्पन्न वर्ग में setpublic दृश्यता के बाद से है आप protected स्पष्ट रूप से निर्दिष्ट नहीं किया है।

class Derived : Base { 
    public override object Var { 
     get { return null; } 
     protected set { // <------ added protected here 
     } 
    } 
} 
+1

हे भगवान: चूंकि इस संपत्ति के सेट अपने आधार वर्ग में दृश्यता की रक्षा की है, तो आपको त्रुटि

cannot change access modifiers when overriding 'protected' inherited member

आप अपने व्युत्पन्न वर्ग में सेट संरक्षित दृश्यता देकर इसे ठीक कर सकते हैं हो रही है! बेवकूफ बनाम! जैसा कि मैंने अपनी पोस्ट में कहा था मैंने कोशिश की थी और इससे मदद नहीं मिली। मैंने इसका उल्लेख किया जब मैंने इसका पुन: प्रयास किया, यह अभी भी काम नहीं कर रहा है, मैंने फिर से आपका जवाब देखा, पुनः संकलित किया, और यह चला गया! तो अब मैं क्या करूं? क्या मुझे आपका जवाब स्वीकार करना चाहिए या क्या मुझे अपनी पोस्ट हटा देना चाहिए? – atoMerz

+0

@AtoMerZ - मैं सबसे अच्छा जवाब स्वीकार करता हूं और आगे बढ़ता हूं। चूंकि प्रश्न ने उत्तर उखाड़ फेंक दिया है, इसलिए आपको इसे हटाने के लिए एक मॉड की आवश्यकता होगी। किसी के लिए परेशानी के लायक नहीं है। –

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