बेस क्लास में किसी संपत्ति के नाम से मेल खाने वाली व्युत्पन्न कक्षा में एक संपत्ति घोषित करना (जब तक यह override
कीवर्ड के साथ ओवरराइड नहीं करता)। आधार और व्युत्पन्न वर्ग गुण दोनों Type.GetProperties()
द्वारा वापस लौटाए जाएंगे यदि उनके प्रकार मेल नहीं खाते हैं। हालांकि, अगर उनके प्रकार मैच करते हैं, तो सदमे से केवल व्युत्पन्न वर्ग की संपत्ति वापस आती है। उदाहरण के लिए:संपत्ति छिपाने और प्रतिबिंब (सी #)
class A
{
protected double p;
public int P { get { return (int)p; } set { p = value; } }
}
class B : A
{
public new int P { get { return (int)p; } set { p = value; } }
}
class C : B
{
public new float P { get { return (float)p; } set { p = value; } }
}
typeof(C).GetProperties()
कॉलिंग केवल रक्तचाप और सी.पी. वापस आ जाएगी क्या GetProperties()
को इस तरह से कॉल करना संभव है कि तीनों को वापस कर दें? विरासत पदानुक्रम को पार करके लगभग निश्चित रूप से ऐसा करने का एक तरीका है, लेकिन क्या एक क्लीनर समाधान है?
तुम क्यों इस तरह के एक वर्ग पदानुक्रम करना चाहते हैं? – driis
@ ड्रिइस: यह चित्रण करने के लिए सिर्फ एक मामूली उदाहरण है। लेकिन, तर्क के लिए, मान लीजिए कि इस वर्ग पदानुक्रम मेरे अलावा किसी अन्य व्यक्ति द्वारा लिखा गया है, लेकिन मुझे अभी भी अपने सभी सार्वजनिक गुणों, यहां तक कि छिपे हुए लोगों को भी ढूंढना होगा। –
चूंकि व्युत्पन्न वर्ग का उपयोग करने का कोई तरीका नहीं है, इसलिए आप छिपी हुई संपत्ति तक पहुंच सकते हैं, मुझे लगता है कि प्रभावी रूप से इसमें प्रतिबिंब के लिए उस संपत्ति नहीं है। अपने आप को भाग्यशाली मानें, वीबी केवल छाया का उपयोग करते समय सीपी दिखाता है। – Wilhelm