Avatar ·

如何通过 Type 变量调用 C# 中的泛型方法?

大家好。我正在编写一个需要处理不同类型数据的小型解析器,但遇到了一个问题,已经困扰我两天了。 我有一个泛型方法: ```csharp public T Deserialize(string data) where T : class { // 一些反序列化逻辑 return JsonConvert.DeserializeObject(data); } ``` 在运行时,我获取到需要反序列化的对象的 `Type`。例如,通过反射我找到了所有实现 `IEntity` 接口的类,并希望为每个类调用 `Deserialize` 并指定具体类型。 问题在于,我不能直接写 `Deserialize(data)`,因为 `myType` 是一个 `Type` 类型的变量,而不是编译时的类型名称。我尝试过使用 `typeof` 和 `MakeGenericMethod`,但都不起作用。以下是我当前会报错的代码: ```csharp Type targetType = typeof(MyClass); MethodInfo method = typeof(MyParser).GetMethod("Deserialize"); MethodInfo genericMethod = m