में ऑब्जेक्ट्स की एक सूची को डाउनकास्टिंग करना मैं ऑब्जेक्ट्स की सूची कैसे घटा सकता हूं ताकि सूची में से प्रत्येक ऑब्जेक्ट व्युत्पन्न कक्षा के ऑब्जेक्ट पर डाउनकास्ट हो?सी #
यह परिदृश्य है।
मैं आधार मदों की एक List
के साथ एक आधार वर्ग है, और इसे से इनहेरिट दो वर्गों:
public class BaseClass
{
public List<BaseItem> items;
protected BaseClass()
{
// some code to build list of items
}
}
public class DerivedClass : BaseClass
{
public DerivedClass : base() {}
}
public class AnotherDerivedClass : BaseClass
{
public AnotherDerivedClass : base() {}
}
public class BaseItem {}
public class DerivedItem : BaseItem {}
public class AnotherDerivedItem : BaseItem {}
विचार कोड आइटमों की सूची बनाने की जरूरत नकल करने की जरूरत नहीं है। BaseItem
में मेरी सभी आवश्यक सामग्री है, और मैं हमेशा व्युत्पन्न वस्तुओं में से एक को BaseItem
घटा सकता हूं।
समस्या तब उत्पन्न होती है जब मेरे पास उनकी सूची होती है। List
BaseItem
BaseClass
में घोषित किया गया है क्योंकि सभी व्युत्पन्न कक्षाओं में यह होना चाहिए। लेकिन रनटाइम पर इसे एक्सेस करते समय मैं व्युत्पन्न कक्षा में डाउनकास्ट करने में सक्षम नहीं लग सकता।
आप शायद इंटरफेस करने के लिए की तलाश में किया जाना चाहिए। –
या एएस और आईएस कीवर्ड। – ThatBlairGuy
या बोग मानक बहुरूपता: बेस क्लास में आभासी विधियां, जिन्हें आप व्युत्पन्न कक्षाओं में ओवरराइड करते हैं। कोई डाउनकास्टिंग आवश्यक नहीं है क्योंकि आप ओवरराइड विधियों को कॉल करने के लिए बेस क्लास प्रकार का उपयोग करते हैं। – Polyfun