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

时间:2010-01-20 10:53:56

标签: c# .net generics reflection

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

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

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

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

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

非常感谢提前!

2 个答案:

答案 0 :(得分:13)

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

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

This blog post也可能包含您需要的信息。

答案 1 :(得分:3)

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