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

C#中如何获取dynamic对象的类型?已试GetType/typeof无效

获取Dynamic对象的自定义类类型名称(无需多if判断)

首先明确:typeof是编译时确定类型,而dynamic的实际类型是运行时才确定的,所以typeof(dynamic)只会返回object的类型,这就是你用它没用的原因。

正确的做法是用GetType()方法,它能在运行时获取dynamic指向的实际对象的类型,直接拿到自定义类的名称:

示例代码

假设你有两个自定义类:

namespace MyApp
{
    public class UserProfile { }
    public class OrderRecord { }
}

使用dynamic时获取类型名:

dynamic dynamicObj = new OrderRecord();

// 获取类名(不含命名空间)
string className = dynamicObj.GetType().Name; // 结果:"OrderRecord"

// 获取完整类型名(含命名空间)
string fullClassName = dynamicObj.GetType().FullName; // 结果:"MyApp.OrderRecord"

注意事项

  • 如果dynamic对象可能为null,记得先判空,否则调用GetType()会抛出NullReferenceException:
if (dynamicObj != null)
{
    string typeName = dynamicObj.GetType().Name;
    // 你的业务逻辑
}
  • 这种方式完全不需要写多个if判断类型,不管实际是哪个自定义类,都能直接拿到对应的类型名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 13:47:06