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
).
dynamic
is the newIDispatch
. Think really hard whether you want to deal with it. – Kauslickv
is declared and used? Or go thru the comment section of my answer, you might get better idea.. – Inchoationdynamic
is. If you already understood the concept, then that's fine. But it may help future visitors. – Inchoation