Dynamic Language Runtime

The Dynamic Languague Runtime (DLR) is a runtime environment that adds a set of services for dynamic languages to the common language runtime (CLR). The DLR makes it easier to develop dynamic languages to run on the .NET Framework and to add dynamic features to statically typed languages.

Dynamic languages can identify the type of an object at run time, whereas in statically typed languages such as C# and Visual Basic you must...

Most dynamic languages provide the following advantages for developers

ExpandoObject

The ExpandoObject represents an object whose members can be dynamically added and removed at runtime.

NOTE: Sistrategia.Entities.Entity could be implemented like a ExpandoObject? Or we can build a DynamicEntity?

Differences between ExpandoObject, DynamicObject and dynamic

The dynamic keyword is used to declare variables that should be late-bound (at compiler level). 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 allos a class to take control of its late-bound behavior. When you use the dynamic keyword to interact with a IDynamicMetaObjectProvider implementation, the DLR calls the IDynamicMetaObjectProvider methods and the object itself decides what to do.

Final notes

This DLR is an Open Source project dlr.codeplex.com.

NEWS: Because the DLR is in the C#/Roslyn team (since before C# 4.0), the DLR moved to github and is now fully open source Roslyn Github

References: