c# – 我可以将类型对象传递给通用方法吗?

参见英文答案 > How do I use reflection to call a generic method?                                    8个
我的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),并且都没有工作.

提前谢谢了!

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

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

This blog post还可能包含您需要的信息.

http://stackoverflow.com/questions/2100760/can-i-pass-a-type-object-to-a-generic-method

转载注明原文:c# – 我可以将类型对象传递给通用方法吗?