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