泛型和接口枚举

时间:2008-11-22 12:20:43

标签: c# .net generics interface ienumerable

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

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

我想把它们全部列入清单并通过它们进行枚举。

 List<IMyinterface> list
 foreach(IMyinterface in list)
 // etc...  

但编译器想知道T是什么。我可以这样做吗?我怎样才能克服这个问题?

3 个答案:

答案 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){}