我一直在使用一些我需要添加模块的代码,我认为我已经正确设置了所有内容,但最后一点让我感到难过.
看起来相对简单,我将一个类型传递给Generic Method
var name typeof(T).AssemblyQualifiedName;
Run Code Online (Sandbox Code Playgroud)
这样我就可以做到这一点
var type = Type.GetType(name);
Run Code Online (Sandbox Code Playgroud)
但它在最后一行抛出异常与name被null
我一直在阅读类型反射,我知道它GetType需要完全限定的程序集名称,但我不明白为什么它会返回null.
这是否意味着我正在对我的代码做一些根本性的错误,因为我认为它AssemblyQualifiedName是从类型中发出的,因为它知道它是如何被引用的?
那么AssemblyQualifiedName 可以返回null:
Type的程序集限定名称,包括从中加载Type的程序集的名称,如果当前实例表示泛型类型参数,则为null.
如果您真的只是使用它,它看起来应该实际上代表一个泛型类型参数typeof(T)- 除非通过某种奇怪的方式通过反射调用泛型方法.
你为什么要尝试使用Type.GetType?这听起来就像你需要的一样
var type = typeof(T);
Run Code Online (Sandbox Code Playgroud)
......那不就是你想做的吗?为什么要通过类型的名称?