我基本上有这样的东西:
void Foo(Type ty)
{
var result = serializer.Deserialize<ty>(inputContent);
}
Foo(typeof(Person));
Deserialize<ty>
无法工作,因为它需要Deserialize<Person>
。我该如何解决这个问题?我也想了解泛型是如何工作的,以及为什么它不接受typeof(Person)
的ty
参数。编辑:我应该提到这只是一个人为的例子。我无法更改函数的签名,因为它实现了一个接口。
编辑:serializer是JavascriptSerializer,并在此处作为操作筛选器实现。它被这样调用:
[JsonFilter(Param="test", JsonDataType=typeof(Person))]
解决方案
基于 Marc 和 Anton 的答案:
var result = typeof(JavaScriptSerializer).GetMethod("Deserialize")
.MakeGenericMethod(JsonDataType)
.Invoke(serializer, new object[] { inputContent });