如果有一组所有实现接口的类。

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调用方法,答案是您不能。否则你可以像anthonywjones一样建议

你仍然需要告诉编译器什么时候T是什么,但你可以做的就是:

 interface IMyinterface
{
    int foo<T>(T Bar);
}

List<IMyinterface> list = new List<IMyinterface>();
foreach(IMyinterface a in list){}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top