我可以将类型对象传递给generics方法吗?

我的DataAccessLayer上有一个FindAll方法,如下所示:

public FindResult FindAll() where T : Entity, new() 

和一个客户端代码有一个Type []数组,它需要用来迭代调用FindAll方法,如下所示:

 foreach (var type in typeArray) { var result = DataAccessLayer.FindAll(); ... 

但编译器抱怨“预期的类型或命名空间”..有没有一种简单的方法来解决这个问题? 我尝试过type.GetType()或typeof(type),但都没有用。

提前谢谢了!

您可能需要使用Reflection来执行此操作,如下所示:

 DataAccessLayer.GetType().GetMethod("FindAll<>").MakeGenericMethod(type).Invoke() 

此博文可能还包含您需要的信息。

使用generics时,类型需要在编译时解析。 您正尝试在运行时提供该类型。