Is there a way to test if a variable is dynamic?

前端 未结 5 1677
北荒
北荒 2020-12-18 18:26

The following piece of code will always return true unless the variable v is null:

v is dynamic

and the following

5条回答
  •  梦毁少年i
    2020-12-18 19:25

    Firstly, you need to separate the variable and the object. A variable is dynamic if it is defined as dynamic. That is all. There is nothing more. A field or property would be annotated with the [Dynamic] attribute, i.e.

    public dynamic Foo {get;set;}
    

    is actually:

    [Dynamic]
    public object Foo {get;set;}
    

    This basically acts as a prompt for the compiler to access the object via the dynamic API rather than via the OOP API.

    An object supports full dynamic capabilities if it implements IDynamicMetaObjectProvider - however, such an object can be accessed via both the dynamic API and via the regular OOP API (it can have both). Equally, an object that doesn't implement IDynamicMetaObjectProvider can be accessed via either API (but: only the public members will be available via dynamic).

提交回复
热议问题