As far as I understand this new "Dynamic" World in C# 4.0, the keyword "dynamic" is not necessarily only a target for System.Dynamic.ExpandoObject.
Yes, to enable late binding for an instance of the ExpandoObject class, you must use the dynamic keyword.
But 'dynamic' could as well be a target for the DynamicObject class and for some different behaviour.
In our application, the dynamic return value is used to validate the return value during run time and not during compile time.The role of the compiler in these examples is to package together information about what each statement is proposing to do to the object or expression that is typed as dynamic. At run time, the stored information is examined, and any statement that is not valid causes a run-time exception.