1. What is Dynamic Language Runtime (DLR)?
DLR is a runtime environment that allows you to integrate dynamic languages with the Common Language Runtime (CLR) by adding a set of services, such as expression trees, call site caching, and dynamic object interoperability to the CLR.
The System.Dynamic and System.Runtime.CompilerServices namespaces are used to hold the classes for DLR. It also provides dynamic features to statically-typed languages, such as C# and Visual Basic to enable their interoperation with dynamic languages.
2. What are the advantages of DLR?
The various advantages provided by DLR are:
3. Give a brief introduction to Binders.
Binders are used by DLR to communicate with not the .NET Framework but also with various other services, such as Silverlight and COM. These services represent language-specific semantics and specify how a particular operation can be performed at the call site.
Call sites refer to the area in the code where logical and mathematical operations, such as a + b or a.b() are performed on dynamic objects.
4. Explain the different services provided by DLR to CLR.
The services provided by DLR to CLR are used for supporting dynamic languages. These services include the following:
5. Name the binders provided by .NET Framework 4.0.
.NET Framework 4.0 provides the following binders:
6. Explain ExpandoObject and DynamicObject classes.
The ExpandoObject class refers to a class whose members can be explicitly added and removed at runtime. In other words, the ExpandoObject class allows dynamic binding of the objects, which enables you to use standard syntax, similar to the dynobj.Method method instead of using more complex syntax, such as dynobj.getAttribute("Method").
The DynamicObject class enables you to define the dynamic behavior for an object at run time. This class cannot be instantiated directly; therefore, to implement the dynamic behavior, you must inherit from the DynamicObject class and override the necessary methods. It allows you to define the specific operations that can be performed on dynamic objects as well the methods to perform those operations.
7. What is the difference between dynamic and var data types?
The difference between the var and dynamic data types is that the var data type is strongly type checked at the compile time; whereas, the dynamic data type is type checked by the compiler only at run time. After declaring a var data type, you cannot explicitly change its type throughout the execution of the program; however, a variable of the dynamic data type can be changed during runtime. Another major difference between the two is that dynamic type can also be used as the return type for methods, for which var cannot be used.
8. Which class is used for converting the data types?
The System.Convert class provides a complete set of methods for converting the data types.