GetType()返回null当类型存在于未引用的程序集中时。例如,当调用以下代码时,“localType”始终为null(即使使用类的完整命名空间名称):
Type localType = Type.GetType("NamespaceX.ProjectX.ClassX");
我认为Type.GetType应该可以从未引用的程序集中检索类型,因此
GetType()返回null当类型存在于未引用的程序集中时。例如,当调用以下代码时,“localType”始终为null(即使使用类的完整命名空间名称):
Type localType = Type.GetType("NamespaceX.ProjectX.ClassX");
我认为Type.GetType应该可以从未引用的程序集中检索类型,因此
使用LoadFrom
方法从其位置加载未引用的程序集,然后调用GetType
方法。
Assembly assembly = Assembly.LoadFrom("c:\ProjectX\bin\release\ProjectX.dll");
Type type = assembly.GetType("NamespaceX.ProjectX.ClassX");
Load
。Assembly assembly = Assembly.Load("ProjectX.dll");
Type type = assembly.GetType("NamespaceX.ProjectX.ClassX");
Load
在这里遵循规则... https://dev59.com/nHVD5IYBdhLWcg3wNY1Z - Anthony Mastrean从MSDN文档中
如果请求的类型是非公开的,并且调用方没有ReflectionPermission来反射当前程序集之外的非公开对象,则此方法返回null。
它还指出,如果程序集未从磁盘加载,则将返回null。
一个可能尝试的解决方法是先加载程序集,然后直接在程序集上使用GetType方法。诚然,根据文档的描述,如果问题是在加载程序集时发生的,它应该会抛出异常。