You have confused dynamic
, which is a compiler feature that means "defer type analysis of uses of this object until runtime" with ExpandoObject
which means "an object that can have properties added at runtime".
It is an understandable confusion; many languages that lack static type checking also have expando objects.