2

我一直在处理一些我需要添加模块的代码,我认为我已经正确设置了所有内容,但最后一点让我难住了。

看起来比较简单,我将一个类型传递给一个泛型方法

var name typeof(T).AssemblyQualifiedName;

这样我就可以做到这一点

var type = Type.GetType(name);

name但是它在最后一行抛出异常null

我一直在阅读类型反射,我知道它GetType需要完全限定的程序集名称,但我不明白为什么它会返回为空。

这是否意味着我对我的代码做了一些根本错误的事情,因为我假设它AssemblyQualifiedName是从一个类型发出的,因为它知道它是如何被引用的?

4

1 回答 1

9

那么AssemblyQualifiedName 可以返回null:

Type 的程序集限定名称,包括从中加载 Type 的程序集的名称,如果当前实例表示泛型类型参数,则为 null。

如果你真的只是在使用它,它看起来并不应该代表一个泛型类型参数typeof(T)——除非泛型方法是通过反射以某种奇怪的方式调用的。

你为什么要尝试使用Type.GetType?听起来你只需要

var type = typeof(T);

......这不正是你想要的吗?为什么要通过类型的名称?

于 2012-05-30T16:19:32.703 回答