में सूचीबद्ध नहीं है मैं एक ऐसी विधि बनाने की कोशिश कर रहा हूं जो उपयोगकर्ता चाहता है कि जिस भी प्रकार की सूची देता है। ऐसा करने के लिए मैं जेनेरिक का उपयोग कर रहा हूं, जिसे मैं बहुत परिचित नहीं हूं इसलिए यह प्रश्न स्पष्ट हो सकता है। समस्या यह है कि इस कोड काम नहीं करता है और त्रुटि संदेश फेंकता Cannot convert type Systems.Collections.Generic.List<CatalogueLibrary.Categories.Brand> to Systems.Collection.Generic.List<T>
जेलीक विधि का उपयोग कर सकते हैं लेकिन जेनेरिक विधि
private List<T> ConvertToList<T>(Category cat)
{
switch (cat)
{
case Category.Brands:
return (List<T>)collection.Brands.ToList<Brand>();
}
...
}
लेकिन अगर मैं IList
बजाय का उपयोग करें, कोई त्रुटि नहीं है।
private IList<T> ConvertToList<T>(Category cat)
{
switch (cat)
{
case Category.Brands:
return (IList<T>)collection.Brands.ToList<Brand>();
}
...
}
मैं इस मामले में सूची क्यों नहीं कर सकता लेकिन सूची नहीं कर सकता? संग्रह। ब्रांड्स एक तृतीय पक्ष लाइब्रेरी से BrandCollection
प्रकार देता है, इसलिए मुझे नहीं पता कि यह कैसे बनाया गया है। क्या यह हो सकता है कि BrandCollection
IList से प्राप्त हो सकता है (बस अनुमान लगाता है कि यह करता है) और इसलिए इसे परिवर्तित किया जा सकता है लेकिन सामान्य सूची में नहीं?
आपको वहां पर प्रकार की बाधाओं को रखना चाहिए! आप सिर्फ कास्टिंग सामान के आसपास नहीं जा सकते हैं। – antonijn
क्या आप सुनिश्चित हैं कि आपका दूसरा उदाहरण 'रिटर्न (IList) संग्रह नहीं है। ब्रांड्स। लिस्ट (); '? –
Matthew
मैं इस काम के बाद देखने के लिए जा रहा था। मैं जेनेरिकों के लिए थोड़ा नया हूं इसलिए लगा कि मैं इसे तब तक छोड़ दूंगा जब तक कि यह कुछ और तोड़ दिया: डी क्या बाधा होगी 'टी: ब्रांड' (और अन्य श्रेणियां)? – XSL