使用反射创建具有动态类型规范的 C# 泛型对象
在 C# 中,您可能需要动态创建泛型对象,例如 Task
要动态创建泛型 TaskA 或 TaskB 对象,请按照以下步骤操作:
例如:
<code class="language-csharp">Type d1 = Type.GetType("namespace.TaskA`1"); Type[] typeArgs = { typeof(Item) }; var makeme = d1.MakeGenericType(typeArgs); object o = Activator.CreateInstance(makeme);</code>
如果泛型类接受多个类型参数,请确保在省略类型名称时包含逗号,例如:
<code class="language-csharp">Type type = typeof(IReadOnlyDictionary<,>); </code>
注意: 代码示例中假设 "namespace.TaskA1" 和
Item是已定义的类型。 实际应用中,需要根据您的具体项目替换这些占位符。 此外,错误处理(例如,处理
Type.GetType()` 返回 null 的情况)在生产环境中至关重要。
以上是如何使用反射创建具有动态类型规范的通用 C# 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!