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

如何通过字符串类名调用嵌套静态类的静态方法?

解决嵌套静态类的Type.GetType获取问题

问题核心在于嵌套类的完全限定名格式规则:.NET中嵌套类的类型名称不是用.分隔嵌套层级,而是用+符号。你用"MyNameSpace.Class1.Class2.Class3.Class4"这种格式调用Type.GetType时,运行时无法识别嵌套结构,自然找不到对应类型;而typeof是编译时解析,能自动处理嵌套类的结构关系,所以可以正常工作。

修复方案

  1. 修正类型字符串格式:把嵌套层级间的.替换为+,正确的类型字符串应该是:
    "MyNameSpace.Class1+Class2+Class3+Class4"
    
  2. 跨程序集的额外处理:如果目标类不在当前执行的程序集或系统核心程序集(如mscorlib)中,需要在类型字符串末尾添加程序集名称(用逗号分隔),示例:
    "MyNameSpace.Class1+Class2+Class3+Class4, MyAssemblyName"
    
    其中MyAssemblyName是类所在程序集的名称(不要加.dll或.exe后缀)。

完整调用示例

// 获取嵌套类的Type对象
Type nestedType = Type.GetType("MyNameSpace.Class1+Class2+Class3+Class4");
// 调用静态方法MyMethod(无参数示例)
nestedType?.GetMethod("MyMethod")?.Invoke(null, null);

额外说明

  • typeof是编译期解析,编译器会自动处理嵌套类的结构映射;而Type.GetType是运行时动态查找,必须严格遵循.NET的类型命名规范。
  • 如果Type.GetType返回null,优先检查类型字符串格式是否正确,再确认目标程序集是否已被正确加载到当前应用域中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:47:04