समाधान नहीं कर पाता मैं जैसे एक विधि है:क्यों संकलक इन सामान्य प्रकार
public void Foo<T1, T2>(T1 list)
where T1 : IList<T2>
where T2 : class
{
// Do stuff
}
अब अगर मैं है:
IList<string> stringList = new List<string>();
List<object> objectList = new List<object>();
IList<IEnumerable> enumerableList = new List<IEnumerable>();
फिर संकलक जेनरिक चयन करने के लिए समाधान नहीं कर सकता और यह विफल:
Foo(stringList);
Foo(objectList);
Foo(enumerableList);
और आप स्पष्ट रूप से इस तरह के रूप में उपयोग करने जेनरिक निर्दिष्ट करने के लिए है:
Foo<IList<string>, string>(stringList);
Foo<IList<object>, object>(objectList);
Foo<List<object>, object>(objectList);
Foo<IList<IEnumerable>, IEnumerable>(enumerableList);
साइड टिप्पणी, लेकिन क्या आपको वास्तव में 'टी 1' की आवश्यकता है? क्या आप 'सार्वजनिक शून्य Foo (IList सूची) नहीं कर सकते थे, जहां टी: कक्षा'? –
संभावित डुप्लिकेट [जेनेरिक एक्सटेंशन विधि के साथ कोई प्रकार अनुमान नहीं] [http://stackoverflow.com/questions/7171067/no-type-inference-with-generic-extension-method) –
लिंक किए गए प्रश्न में एरिक्स का उत्तर जांचें और ब्लॉग पोस्ट उसमें जुड़ा हुआ है। –