动态不包含 GetType() 的定义

Dynamic does not contain a definition for GetType()

我的代码中有一个动态类型的变量,我想做的是获取分配对象的类型,但似乎动态字段中没有可用的属性或方法。

我的代码是这样的:

dynamic readings;

private void method()
{
    Type type= readings.GetType();
}

我是不是做错了什么?

GetType使用参考:

How do I check type of dynamic datatype at runtime?

只需将其转换为 object:

Type type = ((object)readings).GetType();

dynamic 意味着所有调用都可以被拦截,但这是编译器的技巧,而不是该类型的固有特性。将其转换为 object 意味着编译器 停止这样做 。在幕后,dynamic 只是 object 无论如何 的花哨词。

但是请注意,混合反射 (GetType()) 和 dynamic 通常不是一个好主意;虽然对象 可以作为 dynamic 工作(通过将反射 API 重新暴露为 dynamic),但情况并非总是如此,并且许多 (大多数?) dynamic 的实现呈现完全人工的成员,这些成员 在反射方面 不存在。这是 dynamic 的要点,"oh, it also lets you be lazy and talk to types without knowing their type" 只是一个方便的副作用。