为什么Type.GetType给出null
本文关键字:null 给出 GetType Type 为什么 | 更新日期: 2023-09-27 18:14:47
可能重复:
Assembly.GetType(name)
何时返回null
?
在我的项目中,我有一个名为"BaseSystem"的基类,并派生了类"RoundedTree"。对于派生类"RounddTree"和基类"BaseSystem",下面显示的代码'type'
变为null,它给出为"{Name = "BaseSystem" FullName = "Root.SystemModel.BaseSystem"}'
"。我拥有的DLL是Root.SystemModel.DLL,它的版本可以在反射中看到为3.6.7.8对于经过验证的类,"type"变为null的原因是什么
public static Type ToType(UserType usedType)
{
Type type = null;
if (usedTypeType != null
&& usedTypeType.Name != string.Empty)
{
type = Type.GetType(usedType.Name);
Type.GetType(string)
将返回null,如果您只为其提供命名空间限定的类型名称(而不是程序集限定的名称(,并且该类型位于mscorlib
和当前执行的程序集之外的程序集中。
来自文档:
如果typeName包含命名空间而不包含程序集名称,则此方法仅按顺序搜索调用对象的程序集和Mscorlib.dll。如果typeName使用部分或完整程序集名称完全限定,则此方法将在指定的程序集中搜索。如果程序集具有强名称,则需要完整的程序集名称。
假设您的类型与调用类型在不同的程序集中,则选项为:
- 获取有问题的
Assembly
的参考,并致电Assembly.GetType(string)
- 为
Type.GetType(string)
提供程序集限定的类型名称