मुझे लगता है कि मैं कुछ याद आ रही किया जाना चाहिए, मैं इस कारण है कि संकलन नहीं कर सकते हैं:आप सीमित प्रकार के टाइप किए गए एक खुले खुले जेनेरिक क्यों नहीं डाल सकते हैं?
class Foo<T> where T : Bar
{
T Bar;
}
abstract class Bar
{ }
class MyBar : Bar
{ }
static void Main(string[] args)
{
var fooMyBar = new Foo<MyBar>();
AddMoreFoos(fooMyBar);
}
static void AddMoreFoos<T>(Foo<T> FooToAdd) where T : Bar
{
var listOfFoos = new List<Foo<Bar>>();
listOfFoos.Add(FooToAdd); //Doesn't compile
listOfFoos.Add((Foo<Bar>)FooToAdd); //doesn't compile
}
'अगर आप अपनी विधि को Foo के साथ कॉल करना चाहते हैं तो कॉल विफल हो जाएगा' => लेकिन यह कॉल सामान्य बाधा के कारण संकलित नहीं होगा, जहां टी: बार, नहीं? हालांकि, नई सूची >() के लिए +1 क्योंकि यह वास्तव में मेरी असली समस्या हल करता है! –
बाधा पर अच्छा बिंदु। अगर मैंने आपकी समस्या हल की है तो आपने दूसरे जवाब को स्वीकार क्यों किया है ... (जॉन स्कीट या नहीं! ;-)) –