मैं इंटरफेस और अमूर्त कक्षाओं में नया हूं। मैं शॉपिंग कार्ट सिस्टम के लिए ऑब्जेक्ट्स के लिए कोर विधियों और चर को परिभाषित करने के लिए कुछ इंटरफेस बनाना चाहता हूं। फिर मैं सार कार्यों को लागू करना चाहता हूं जो मूल कार्यों को लागू करते हैं। विचार यह है कि विभिन्न परियोजनाओं के लिए उन्हें अन्य वर्गों द्वारा थोड़ा अलग तरीकों से उपयोग किया जा सकता है।मैं एक और इंटरफ़ेस होने के लिए एक इंटरफ़ेस विधि के रिटर्न प्रकार को कैसे परिभाषित करूं?
यहाँ मेरी (कट-डाउन) इंटरफेस हैं:
public abstract class Cart : ICart
{
private List<CartItem> _cartItems = new List<CartItem>();
public List<CartItem> CartItems
{
get
{
return _cartItems;
}
}
}
और मेरे CartItem:
public interface ICart
{
...
List<ICartItem> CartItems { get; set; }
}
public interface ICartItem
{
int ProductId { get; set; }
int Quantity { get; set; }
}
और यहाँ मेरी सार कार्ट वर्ग (फिर से, केवल प्रासंगिक लाइनों दिखा रहा है) जो ICart लागू करता है कक्षा जो ICartItem लागू करती है:
public abstract class CartItem : ICartItem
{
...
}
जब मैं कक्षाओं को संकलित करने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है aying: 'कार्ट' इंटरफ़ेस सदस्य 'CartItems' लागू नहीं करता है। 'Cart.CartItems' 'ICart.CartItems' को कार्यान्वित नहीं कर सकता है क्योंकि इसमें सिस्टम का मिलान करने वाला रिटर्न प्रकार नहीं है। चयन। जेनरिक। लिस्ट < आईसीएर्टआईटीम >।
मैंने सोचा कि यह विचार यह है कि इंटरफ़ेस को कई वर्गों द्वारा कार्यान्वित किया जा सकता है जो विभिन्न तरीकों से मूल कार्यों को निष्पादित करते हैं और नए तरीकों को जोड़ते हैं। आदि। मेरे इंटरफ़ेस को यह जानने की आवश्यकता क्यों होगी कि वास्तव में किस वर्ग का उपयोग किया जा रहा है , जब तक कि कक्षा वास्तव में इंटरफ़ेस को सही ढंग से लागू करती है?
जेनरिक C# 2.0 :) –
यह इस लागू करने के लिए एक बहुत अच्छा तरीका है के रूप में उपलब्ध हैं! – mquander
(सी # 2 चीज तय की गई है; आशा है कि आपको कोई फर्क नहीं पड़ता ...) –