我试图在运行时使用detemirned类型调用泛型方法。此调用:JToken对象上的Type type = ...; jToken.Value.Value<type>();
。
我走到这一步,我相信我几乎就在那里。但我得到了一个&#34;参数计数不匹配&#34;调用Invoke
时出现异常。我无法弄清楚原因。
public void Foo(JObject obj, Type type)
{
foreach (var valuePair in obj)
{
JToken jToken = valuePair.Value;
var genericMethod = jToken.GetType().GetMethod("Value").MakeGenericMethod(new Type[] {type});
// should call jToken.Value<type>()
var value = genericMethod.Invoke(jToken, null);
}
}
答案 0 :(得分:1)
Value()
JObject
方法需要一个关键参数,但您没有指定该参数,因此找不到具有0个参数的方法并抛出异常。
答案 1 :(得分:1)
JToken.Value
需要一个参数:值的关键字。所以你会这样做:
var value = genericMethod.Invoke(jToken, new[] { valuePair.Key });