You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Type.GetType("ClassName")返回null 已排查基础项仍未解决求助

Type.GetType返回null的排查与解决

以下是几种常见原因和对应的解决方法:

1. 程序集加载与名称格式问题

  • 先纠正代码笔误:Assemly应为Assembly,该拼写错误会导致编译失败,需确认实际运行代码无此问题。
  • Assembly.Load参数问题:Assembly.Load("MyAssemblyName")仅当程序集在当前应用域默认加载路径(如输出目录)时才能成功加载。若程序集不在该路径,需使用Assembly.LoadFrom传入完整程序集路径,或确保MyAssemblyName是程序集的完整全名(包含版本、文化、公钥标记,例如MyAssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null)。
  • GetType参数格式错误:指定程序集时必须使用"完整类型名, 程序集完整全名"的格式,手动拼接的assembly.FullName需确保准确,建议通过typeof(ClassName).Assembly.FullName获取权威值。

2. 类型查找范围限制

  • 仅传入类型名(如ClassName)时,Type.GetType只会在当前执行程序集和mscorlib/System.Private.CoreLib中查找,若目标类型不在这两个程序集内,必然返回null。
  • 仅传入命名空间+类型名(如namespace.ClassName)时,CLR只会在已加载的程序集中查找,若程序集未被加载(或加载失败),同样无法找到类型。

3. 更可靠的替代写法

直接从包含目标类型的程序集中获取,避免依赖Type.GetType的自动查找:

// 方式1:通过typeof获取程序集,再查找类型
Assembly targetAssembly = typeof(ClassName).Assembly;
Type type = targetAssembly.GetType("namespace.ClassName");

// 方式2:使用完整的类型+程序集名称(确保名称准确)
string fullTypeName = typeof(ClassName).FullName;
string assemblyFullName = typeof(ClassName).Assembly.FullName;
Type type = Type.GetType($"{fullTypeName}, {assemblyFullName}");

内容的提问来源于stack exchange,提问作者Edlaos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 20:22:33