Если у вас есть набор классов, реализующих интерфейс.
interface IMyinterface<T>
{
int foo(T Bar);
}
Я хочу запихнуть их всех в список и перечислить по ним.
List<IMyinterface> list
foreach(IMyinterface in list)
// etc...
но компилятор хочет знать, что такое T. Я могу сделать это? Как я могу решить эту проблему?





Типа IMyinterface не существует, есть только тип IMyinterface`1, для которого требуется аргумент типа. Вы можете создать тип IMyinterface: -
interface IMyinterface { ... }
затем унаследовать от него
interface IMyinterface<T> : IMyinterface { ... }
Вам нужно будет переместить любые элементы, которые вы хотите использовать в цикле foreach, в определение IMyinterface.
Если вы планируете вызывать метод с буквой T в подписи, ответ будет отрицательным. В противном случае вы можете сделать так, как предлагает Энтонивджонс
Вам все равно нужно когда-нибудь сообщить компилятору, что такое T, но можно сделать именно то, что вы просили:
interface IMyinterface
{
int foo<T>(T Bar);
}
List<IMyinterface> list = new List<IMyinterface>();
foreach(IMyinterface a in list){}