Следующая подпись позволит Add
принимать любые T
, которые реализуют I<>
с параметрами любого типа.
void Add<T,S>(T obj) where T : I<S> {
}
Недостатком использования этой сигнатуры метода является то, что вывод типа не срабатывает, и вы должны указать все параметры типа, что выглядит глупо:
blah.Add<I<int>, int>(iInstance);
Намного проще использовать подпись ниже:
void Add<T>(I<T> obj) {
}