如果有一组所有实现接口的类。
interface IMyinterface<T>
{
int foo(T Bar);
}
我想把它们全部列入清单并通过它们进行枚举。
List<IMyinterface> list
foreach(IMyinterface in list)
// etc...
但编译器想知道T是什么。我可以这样做吗?我怎样才能克服这个问题?
答案 0 :(得分:7)
没有IMyinterface类型只有IMyinterface`1类型需要一个类型参数。您可以创建一个IMyinterface类型: -
interface IMyinterface { ... }
然后继承它
interface IMyinterface<T> : IMyinterface { ... }
您需要将要在foreach循环中使用的任何成员移动到IMyinterface定义。
答案 1 :(得分:1)
如果您计划在签名中使用T调用方法,答案是您不能。否则你可以像anthonywjones一样建议
答案 2 :(得分:1)
你仍然需要告诉编译器什么时候T是什么,但你可以做的就是:
interface IMyinterface
{
int foo<T>(T Bar);
}
List<IMyinterface> list = new List<IMyinterface>();
foreach(IMyinterface a in list){}