प्रत्येक आइटम में एक इंटरफ़ेस है, IItem
। साथ ही, एक इंटरफेस IDrawableItem
के रूप में जाना जाता है जो आइटम से प्राप्त होता है।कास्टिंग और इंटरफ़ेस विरासत
नीचे दिया गया कोड, एक ड्रॉइंग आइटम खींचने की कोशिश कर रहा है, लेकिन संग्रह के रूप में इस श्रेणी के स्टोर केवल IItem
स्वीकार नहीं कर सकते हैं। आप इस वर्ग में IItem
से प्राप्त कुछ भी जोड़ सकते हैं, लेकिन अन्य विधियों का उपयोग करके केवल कास्टिंग करके हासिल किया जा सकता है।
foreach (var item in Items) {
item.Draw(); // The casting would go here.
}
मैं कैसे कास्ट करने के लिए, as
आदि ... लेकिन यह स्वीकार्य है पता है? क्या यह सबसे अच्छा अभ्यास है?
बस सोच रहा है कि ऐसे परिदृश्यों को संभालने के अन्य तरीके हैं या नहीं।
नीचे दिया गया कोड, एक ड्रॉइंग आइटम खींचने की कोशिश कर रहा है, लेकिन संग्रह के रूप में इस श्रेणी के स्टोर केवल IItem स्वीकार नहीं कर सकते हैं। - क्यूं कर? डिजाइन के बारे में हमें थोड़ा बताओ। क्या आप इसे बदल सकते हैं? –
जेसन का कोड आपको आपकी दुविधा से बाहर कर देगा। मुद्दा यह है कि क्या यह आपकी वस्तुओं के लिए सही डिजाइन है, और विवरण की 2 पंक्तियों से कहना मुश्किल है। – hackerhasid
शायद ऐसे संग्रह का उपयोग करें जो इसके बजाय IDrawbleItem को संग्रहीत करता है? –