System.Dynamic.ExpandoObject
,System.Dynamic.DynamicObject
和dynamic
有什么区别?
您在哪种情况下使用这些类型?
最佳答案
dynamic
关键字用于声明应晚绑定(bind)的变量。
如果要对任何实类型或想象中的类型使用后期绑定(bind),请使用dynamic
关键字,然后由编译器执行其余操作。
当您使用dynamic
关键字与普通实例进行交互时,DLR对实例的普通方法执行后期绑定(bind)调用。
IDynamicMetaObjectProvider
interface允许类控制其后期绑定(bind)行为。
当您使用dynamic
关键字与IDynamicMetaObjectProvider
实现进行交互时,DLR会调用IDynamicMetaObjectProvider
方法,并且对象本身将决定要执行的操作。ExpandoObject
和DynamicObject
类是IDynamicMetaObjectProvider
的实现。ExpandoObject
是一个简单的类,它允许您将成员添加到实例并使用dynamic
盟友。DynamicObject
是一个更高级的实现,可以继承它以轻松提供自定义行为。