【发布时间】:2023-03-18 14:51:01
【问题描述】:
你能帮我解决一个问题吗?我想初始化和使用这样一个类:
public class GenericClass<T>
{
public static T Method(string xml)
{
...
}
}
我想做的是:
public void do(Type _type)
{
var genObj = new GenericClass<_type>(); // Error
var result = genObj.Method("parameter");
}
我找到了如何初始化 GenericClass here ,但我真的不知道如何运行该实例的方法,该方法返回初始化中使用的类型。
【问题讨论】:
-
请注意
MakeGenericType将 _type 绑定为 T 并返回一个 Type “包含”物化泛型类定义。然后,Activator.CreateInstance 可以解决问题,就像任何类型一样。 -
我想一个后续问题可能是,你想用这个解决方案解决什么问题?
-
我找到了创建泛型类的方法,但我不确定如何运行方法并从中获取结果。结果应该与我用于创建类的类型相同。
-
_type具有仅在运行时已知的值。类型参数<T>在编译时必须是已知的(对于任何具体类型)。因此,您所问的根本不可能,因为它需要在可用之前的信息。 -
嗨。你为什么在这个问题上设置“重复”?您提供的答案链接无法帮助解决问题。
标签: c# generics reflection typeof