首页 >后端开发 >C++ >我可以将实例化system.type作为c#中的通用类型参数传递吗?

我可以将实例化system.type作为c#中的通用类型参数传递吗?

DDD
DDD原创
2025-02-01 12:16:11236浏览

Can I Pass an Instantiated System.Type as a Generic Type Parameter in C#?

> >将实例化system.type作为通用类>

>的类型参数,该问题围绕着构建通用类的可行性的问题实例化类型实例。具体而言,可以创建MyGenericClass< mytype>在哪里动态确定myType?

>直接方法导致编译器错误“找不到类型或名称空间'mytype'。为了克服此限制,反射提供了解决方案。

使用反射,可以动态创建与通用类的类型参数兼容的类型。以下是一个示例:
public class Generic<T>
{
    public Generic()
    {
        Console.WriteLine("T={0}", typeof(T));
    }
}

class Test
{
    static void Main()
    {
        string typeName = "System.String";
        Type typeArgument = Type.GetType(typeName);

        Type genericClass = typeof(Generic<>);
        // MakeGenericType is badly named
        Type constructedClass = genericClass.MakeGenericType(typeArgument);

        object created = Activator.CreateInstance(constructedClass);
    }
}

请注意,该示例使用单个类型参数,但支持多个参数。要省略具有多个参数的通用类的类型参数,如下示例所示,包括占位符中的逗号:
Type genericClass = typeof(IReadOnlyDictionary<>, <>);
Type constructedClass = genericClass.MakeGenericType(typeArgument1, typeArgument2);

以上是我可以将实例化system.type作为c#中的通用类型参数传递吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn