मैं केवल आधार सारणी कक्षा से किसी दिए गए संपत्ति पर सी # गेटर के कार्यान्वयन को मजबूर करना चाहता हूं। व्युत्पन्न कक्षाएं, यदि वे चाहें, तो उस संपत्ति के लिए स्थिर रूप से बाध्य प्रकार के सार्वजनिक उपयोग के लिए एक सेटटर भी प्रदान करें।संपत्ति पढ़ने/लिखने के लिए अमूर्त रीडोनली संपत्ति को ओवरराइड करें
को देखते हुए निम्नलिखित सार वर्ग:
public abstract class Base
{
public abstract int Property { get; }
}
अगर मैं एक व्युत्पन्न वर्ग है कि यह भी एक सेटर को लागू करता है चाहता हूँ, मैं भोलेपन की कोशिश कर सकते:
public class Derived : Base
{
public override int Property
{
get { return field; }
set { field = value; } // Error : Nothing to override.
}
private int field;
}
लेकिन तब मैं के बाद से मैं एक वाक्य रचना त्रुटि मिलती है गैर मौजूदा सेटर को ओवरराइड करने का प्रयास करें। मैंने कुछ अन्य तरीकों की कोशिश की जैसे कि बेस सेटर निजी और इस तरह की घोषणा करना और मैं अभी भी मुझे ऐसा करने से रोकने वाली सभी प्रकार की त्रुटियों पर ठोकर खा रहा हूं। ऐसा करने का एक तरीका होना चाहिए क्योंकि यह किसी भी बेस क्लास अनुबंध को तोड़ता नहीं है।
संयोग से, यह इंटरफेस के साथ किया जा सकता है, लेकिन मुझे वास्तव में उस डिफ़ॉल्ट कार्यान्वयन की आवश्यकता है।
मैं उस स्थिति में इतनी बार ठोकर खा रहा था, मैं सोच रहा था कि ऐसा करने के लिए एक छिपी हुई सी # वाक्यविन्यास चाल थी, अन्यथा मैं इसके साथ रहूंगा और मैन्युअल सेटप्रोपर्टी() विधि को कार्यान्वित करूँगा।
पार लिंक: http://stackoverflow.com/questions/2243886/make-a-read-only-property-writable-in-the-derived-class – Mikhail