c# - 如何将 Type 变量发送到通用方法?

标签 c# generic-method generics

我有这样的方法,

public List<T> Test<T>()
{
    // do something.
}

我不知道什么是 T,也没有。但是我的类型是 T 作为 TYPE。

例如:

class Person
{

}

var type = typeof(Person);

我没有人。 Person 保持在类型对象上。

如何使用测试方法?

var list = Test<type>(); // It gives an error like this. I must use the type object.

最佳答案

您可以使用 MakeGenericMethod方法来自 MethodInfo :

MethodInfo info = this.GetType().GetMethod("Test").MakeGenericMethod(type);
object result = info.Invoke(this, null);

这是假设您在定义 Test 的相同类型中调用该方法。如果您从其他地方调用它,请使用 typeof(ClassThatDefinesTest) 而不是 this.GetType(),并使用此类的实例而不是 this.

关于c# - 如何将 Type 变量发送到通用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11033041/

相关文章:

vb.net - 帮助使用 Linq 和泛型。在查询中使用 GetValue

swift - 如何在 Swift 中将泛型类型约束为另一个泛型类型?

c# - 在 Windows 8 中针对 metro 和非 metro 目标平台进行多目标定位

c# - 如何在 C# 中实例化泛型方法?

java - Java泛型有没有办法模仿OR

java - 如何定义一个方法,该方法接收两个类型为 T 的参数,以及在 java 中扩展 T 的 S ?

Java 编译器不同意泛型方法调用的安全性

c# - 用参数替换 Where 子句 Lambda 中的运算符

c# - 如何通过 Web 应用程序向 Azure 通知中心注册远程设备

c# - 如何使用 C# 从 UI 终止线程