首页 > 后端开发 > C++ > 如何使用C#中的动态类型参数调用通用方法?

如何使用C#中的动态类型参数调用通用方法?

Mary-Kate Olsen
发布: 2025-02-03 07:55:09
原创
631 人浏览过

How to Call Generic Methods with Dynamic Type Parameters in C#?

在运行时确定类型参数的情况下调用泛型方法

许多应用程序处理在运行时之前未知的类型。在这种情况下,使用动态获取的类型参数调用泛型方法变得至关重要。本文探讨实现此任务的最佳实践。

假设以下场景:在 Example() 方法中,我们需要使用存储在 myType 变量中的 Type 调用泛型方法 GenericMethod<T>()。直接调用 GenericMethod<myType>() 的方法不可行。

为了使用动态类型参数调用泛型方法,我们使用反射。首先,我们使用 GetMethod() 获取方法元数据。然后,我们通过提供适当的类型参数,使用 MakeGenericMethod() 构造泛型方法。最后,我们使用 Invoke() 调用泛型方法。

<code class="language-csharp">MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod));
MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(this, null);</code>
登录后复制

如果泛型方法是静态的,我们将 null 作为第一个参数传递给 Invoke。此步骤与泛型方法无关,是通用的反射实践。

C# 4 引入了“dynamic”类型推断,简化了特定场景中的此过程。但是,当类型推断不可用时,了解反射仍然很有用。

以上是如何使用C#中的动态类型参数调用通用方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板