Differences between ExpandoObject, DynamicObject and dynamic

后端 未结 4 1783
抹茶落季
抹茶落季 2020-11-29 15:38

What are the differences between System.Dynamic.ExpandoObject, System.Dynamic.DynamicObject and dynamic?

In which situations d

4条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-11-29 16:37

    The dynamic keyword is used to declare variables that should be late-bound.
    If you want to use late binding, for any real or imagined type, you use the dynamic keyword and the compiler does the rest.

    When you use the dynamic keyword to interact with a normal instance, the DLR performs late-bound calls to the instance's normal methods.

    The IDynamicMetaObjectProvider interface allows a class to take control of its late-bound behavior.
    When you use the dynamic keyword to interact with an IDynamicMetaObjectProvider implementation, the DLR calls the IDynamicMetaObjectProvider methods and the object itself decides what to do.

    The ExpandoObject and DynamicObject classes are implementations of IDynamicMetaObjectProvider.

    ExpandoObject is a simple class which allows you to add members to an instance and use them dynamically.
    DynamicObject is a more advanced implementation which can be inherited to easily provide customized behavior.

提交回复
热议问题