我有一个字符串,其中包含指定类型的通用类的名称:
string s = "GenericRouteHandler<MemberHandler>";
我怎么通过这个字符串实例化一个对象?我知道如何使用Type.GetType()实例化具体的类,然后使用Activator,但我不确定如何处理泛型类。
像这样 typeof(GenericRouteHandler<>).MakeGenericType(typeof(MemberHandler))
当然,如果您没有类型,则必须使用Type.GetType(string)
获取类型,而不是使用typeof
。
编辑:然后您需要激活类型Activator.CreateInstance()
或者如果知道签名,则调用构造函数 myGenericType.GetConstructor(ctorArgsTypes).Invoke(ctorParams);
;如果缓存构造函数,则可以更快地进行速度优化而不是使用 Activator.CreateInstance()。