सैद्धांतिक प्रश्न के लिए समय मैंने अभी भाग लिया।आंशिक रूप से एक चाइल्ड क्लास में वर्चुअल ऑटो-प्रॉपर्टी को ओवरराइड करना
निम्नलिखित कोड वैध है और संकलित:
public class Parent
{
public virtual object TestProperty { get; set; }
}
public class Child : Parent
{
private string _testValue = "Hello World!";
public override object TestProperty
{
get { return _testValue; }
}
}
public class Consumer
{
Parent p = new Child();
public Consumer(){ p.TestProperty = 3; }
}
मेरा प्रश्न है:
क्यों सी # मुझे आंशिक रूप से एक बच्चे में TestProperty
ऑटो संपत्ति ओवरराइड करने के लिए जब यह करने के लिए आंशिक रूप से अप्रत्याशित व्यवहार की ओर जाता है की अनुमति नहीं है ? क्या कोई व्यावहारिक अनुप्रयोग है?
मुझे माता-पिता के सेटटर का उपयोग करके टेस्टप्रोपर्टी का मान सेट करने की अनुमति है (मैंने आईएल उत्पन्न होने की जांच की है और सेटटर अभी भी मूल वर्ग में बैकिंग ऑब्जेक्ट सेट कर रहा है) भले ही मूल्य जनता के लिए उपलब्ध न हो।
दिलचस्प सवाल! –
मुझे यकीन है कि इस तरह की कई अजीब चीजें हैं जो संकलित और कार्य करेगी, फिर भी कोई व्यावहारिक अनुप्रयोग और संभावित बदसूरत दुष्प्रभाव नहीं हैं। हथौड़ा घरों का निर्माण करते हैं या आप उनका उपयोग कैसे करते हैं इसके आधार पर अंगूठे तोड़ते हैं :) –
@ डेव - बहुत सच है। मैं बस यह सुनिश्चित करना चाहता हूं कि, इस मामले में, हथौड़ा के साथ मेरे अंगूठे को तोड़ने से कुछ उद्देश्य नहीं मिलते हैं जिन्हें मैं नहीं देख रहा हूं। –