मैं एक आधार वर्ग एक आभासी संपत्ति है कि है:संपत्ति सेटटर की अनुमति नहीं होने पर फेंकने का क्या अपवाद है?
public virtual string Name { get; set; }
तो मैं एक व्युत्पन्न वर्ग है कि केवल संपत्ति
public override string Name
{
get { return "Fixed Name"; }
}
की गेटर ओवरराइड करता है समस्या यह केवल गेटर को ओवरराइड करता है। अगर कोई सेटटर को कॉल करता है तो बेस क्लास सेटर कॉल किया जाएगा, और कॉलर को यह नहीं पता होगा कि यह अप्रभावी है।
तो मैंने सोचा कि मैं कुछ ऐसा करना चाहते हैं:
public override string Name
{
get { return "Fixed Name"; }
set { throw new Exception(); } //which exception type?
}
तो दो (संबंधित प्रश्नों):
- वहाँ एक बेहतर पैटर्न मुझे इस्तेमाल करने के लिए है?
- यदि मुझे उपरोक्त पैटर्न का उपयोग करना चाहिए, तो उपयोग करने के लिए क्या अपवाद है?
संपादित: कुछ वजहों एक अपवाद से अधिक प्राथमिकता दी जाएगी एक और अच्छा होगा। मेरे सहकर्मी और मेरे पास NotSupported
और InvalidOperation
के बीच एक ही तर्क था।
क्या कोई कारण है कि आपको बेस क्लास में सेटर की आवश्यकता क्यों है? –
@DarylTeo हां, बेस क्लास को मैन्युअल रूप से नाम सेट करने का समर्थन करने की आवश्यकता है, हालांकि यह कन्स्ट्रक्टर में हो सकता है। – Ray