निम्नलिखित कोड के साथ, मुझे "वापसी पुस्तकें" पर संकलन त्रुटि को "निहित रूप से डालने में असमर्थ" प्राप्त होता है; लाइन।मैं इंटरफेस प्रकार की सूची कैसे ठीक से वापस कर सकता हूं?
मैंने सोचा था कि क्योंकि पुस्तक वस्तुओं की एक सूची लौट रहा है जो प्रकाशन को लागू करता है, यह ठीक काम करना चाहिए?
public interface IPublication {}
public class Book : IPublication {}
public List<IPublication> GetBooks()
{
List<Book> books = new List<Book>();
return books;
}
मुझे लगता है कि अगर मैं एक एकल पुस्तक को एक एकल प्रकाशन वस्तु के रूप में वापस करता हूं तो यह ठीक काम करता है। List<>
का परिचय स्पष्ट कलाकारों की आवश्यकता है।
एक समाधान मैं उपयोग कर रहा हूँ के रूप में:
return books.Cast<IPublication>().ToList();
आपके अंतिम उदाहरण में, आप 'पुस्तकें भी वापस कर सकते हैं। कैस्ट < प्रकाशन>(); 'सी # 3 और निचले स्तर पर। यह सूची को डुप्लिकेट नहीं करेगा, बल्कि बदले में एक गणना करेगा जो प्रत्येक आइटम को इंटरफ़ेस प्रकार में एक-एक करके डालेगा, जिसके लिए लगभग कोई स्मृति नहीं है। – cdhowie
अच्छा बिंदु, cdhowie। यह केवल सी # 3 और उच्चतर पर काम करता है, हालांकि। संस्करण 2 में एक्सटेंशन विधियां या 'कास्ट' फ़ंक्शन नहीं था। बेशक आप 'संख्यात्मक' वर्ग आयात कर सकते हैं और इसे स्थिर रूप से कॉल कर सकते हैं, लेकिन शायद यह प्रयास के लायक नहीं है। – Gabe