动态不包含 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" 只是一个方便的副作用。
我的代码中有一个动态类型的变量,我想做的是获取分配对象的类型,但似乎动态字段中没有可用的属性或方法。
我的代码是这样的:
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" 只是一个方便的副作用。