利用反射在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中文网其他相关文章!