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
相关产品推荐
相关产品推荐

