类型.GetType返回null

本文关键字:null 返回 GetType 类型 | 更新日期: 2023-09-27 18:07:15

我正在尝试使用Type。GetType并传递"caLibClient.entity"。Web2ImageEntity"完整的类名。caLibClient。实体是命名空间,位于分离程序集(caLibClient)中,并添加到程序引用程序集列表中。的类型。当我从程序调用它时,GetType总是返回Null,有什么问题吗?

类型.GetType返回null

还需要添加程序集名称,因为您的类型不在执行程序集的中(也不在mscorlib中)。所以调用应该是:

var myType = Type.GetType("caLibClient.entity.Web2ImageEntity, FullAssemblyName");

来自Type.GetType()文档:

typeName
类型: System.String
要获取的类型的程序集限定名称。看到AssemblyQualifiedName。类型是否在当前执行的程序集或Mscorlib.dll中,提供类型名称就足够了

AssemblyQualifiedName的文档中,这是一个示例名称:

TopNamespace.SubNameSpace.ContainingClass+NestedClass, MyAssembly, Version=1.3.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089

Update:如果您已经在项目中引用了程序集,并且在编译时知道类型名称是什么,那么您最好使用

Type myType = typeof(caLibClient.entity.Web2ImageEntity);

,因为现在你不需要在运行时搜索类型;

根据程序集限定名

尝试Type.GetType("caLibClient.entity.Web2ImageEntity, caLibClient")

您需要传递一个程序集限定名,在您的情况下类似于:

var yourType = Type.GetType("caLibClient.entity.Web2ImageEntity,caLibClient");

如果您知道目标类型所在的程序集中的类型,则可以避免对完整的程序集限定名进行硬编码。例如:

Type.GetType(
    "MyAssembly.Foo.BarSubclass, " + typeof(MyAssembly.Foo.IBar).Assembly.FullName)