我有一个方法
public Queryable Query<T>()
{
}
现在我可以通过动态创建泛型参数T来调用该方法。
像这样的事情 public Queryable Query<T>()
{
Query<OtherT>();
}
otherT可以是T中的一种属性。
谢谢,
答案 0 :(得分:4)
您可以使用反射动态调用泛型方法,首先获取泛型方法定义(使用Type.GetMethod
),然后调用MakeGenericMethod
并提供类型参数,然后调用Invoke
。但是,为了给你一个例子,你还没有给我们足够的信息。
答案 1 :(得分:2)
你做不到。通用参数类型需要在编译时知道。这就是为什么我们说当我们使用泛型时它是一个强类型代码,因为类型是事先已知的。仅在运行时知道类型时,不能将其用作通用参数。
答案 2 :(得分:2)
尝试以下方法:
public Queryable Query<T>()
{
MethodInfo method = GetType().GetMethod("Query");
return (Queryable)method.MakeGenericMethod(typeof(OtherT)).Invoke(this, null);
}
这会自动关闭Query<T>
的{{1}}方法。您可以在此处提供所需的类型。