首页 > 后端开发 > C++ > 如何使用反射在 C# 中动态创建通用对象?

如何使用反射在 C# 中动态创建通用对象?

DDD
发布: 2025-01-22 09:32:09
原创
805 人浏览过

How Can I Dynamically Create Generic Objects in C# Using Reflection?

利用反射在C#中动态创建泛型对象

在C#中,我们经常会遇到需要根据类型字符串动态创建对象的情况。这种方法利用反射来避免显式类型声明。

考虑以下类结构:

public class Item
{ }

public class Task<T>
{ }

public class TaskA<T> : Task<T>
{ }

public class TaskB<T> : Task<T>
{ }
登录后复制

我们的目标是使用反射动态创建TaskA或TaskB的实例。由于事先不知道类型,我们将依赖于类型字符串,例如“namespace.TaskA”或“namespace.TaskAB”。

使用反射,我们可以按如下方式实现:

var type = Type.GetType("namespace.TaskA`1"); // 将“namespace”替换为您实际的命名空间
Type[] typeArgs = { typeof(Item) };
var makeme = type.MakeGenericType(typeArgs);
object instance = Activator.CreateInstance(makeme);
登录后复制

此方法根据指定的类型字符串动态创建TaskA的实例。如果泛型类接受多种类型,请确保在省略类型名称时包含逗号,如下例所示:

Type type = typeof(IReadOnlyDictionary);
登录后复制

以上是如何使用反射在 C# 中动态创建通用对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

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