呼叫通用方法系统.reflection.targetException:对象不匹配目标类型

发布于 2025-02-02 00:01:54 字数 690 浏览 3 评论 0原文

我正在尝试从发送的字符串和ID中获取一个对象。Ipreserver

var type = Type.GetType($"{Namespace.Models}.{typeName.Singularize().Pascalize()}");

MethodInfo method = typeof(IPreserver).GetMethod(nameof(IPreserver.ReadAsync));
MethodInfo generic = method.MakeGenericMethod(type);
var instance = Activator.CreateInstance(type);
var model = generic.Invoke(instance, new object[] { id });

被授予控制器。 ipreserver.readasync的签名是:

Task<T> ReadAsync<T>(Guid id)

一切看起来都不错,直到var model = generic.invoke line。但是它抛出了:

System.Reflection.TargetException: Object does not match target type.

如何正确调用readasync?

I'm trying to get an object based off of a string and id that are sent in.

var type = Type.GetType(
quot;{Namespace.Models}.{typeName.Singularize().Pascalize()}");

MethodInfo method = typeof(IPreserver).GetMethod(nameof(IPreserver.ReadAsync));
MethodInfo generic = method.MakeGenericMethod(type);
var instance = Activator.CreateInstance(type);
var model = generic.Invoke(instance, new object[] { id });

IPreserver is DI-ed into the controller. The signature of IPreserver.ReadAsync is:

Task<T> ReadAsync<T>(Guid id)

Everything looks good up to the var model = generic.Invoke line. But then it throws:

System.Reflection.TargetException: Object does not match target type.

How can I properly call ReadAsync?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文