そのような方法がある場合:
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);