0% found this document useful (0 votes)
41 views

System - Dynamic: 1. What Is Dynamic Language Runtime (DLR) ?

The Dynamic Language Runtime (DLR) allows dynamic languages to be integrated into the Common Language Runtime (CLR). It provides services like expression trees and call site caching that enable dynamic features in statically-typed languages like C# and VB. DLR allows easy implementation of dynamic languages in .NET, sharing of objects between languages, and fast execution of dynamic operations through caching. Binders enable DLR to communicate with .NET and other services like Silverlight and COM.

Uploaded by

Archana
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views

System - Dynamic: 1. What Is Dynamic Language Runtime (DLR) ?

The Dynamic Language Runtime (DLR) allows dynamic languages to be integrated into the Common Language Runtime (CLR). It provides services like expression trees and call site caching that enable dynamic features in statically-typed languages like C# and VB. DLR allows easy implementation of dynamic languages in .NET, sharing of objects between languages, and fast execution of dynamic operations through caching. Binders enable DLR to communicate with .NET and other services like Silverlight and COM.

Uploaded by

Archana
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

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:

Allows you to easily implement the dynamic languages to the .NET Framework.

Provides dynamic features to statically-typed languages. The statically-typed .NET


Framework languages, such as C# and Visual Basic can create dynamic objects and use
them together with statically-typed objects.

Implements sharing of libraries and objects, which means that the objects and libraries
implemented in one language can be used by other languages using DLR. The DLR also
enables interoperation between statically-typed and dynamic languages.

Enables fast execution of dynamic operations by supporting advance caching.

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:

Expression Trees - Refers to the representation of code in a data structure similar to a


tree. However, expression trees in DLR are the advanced version of the expression trees
that were introduced with LINQ in .NET 3.5. Therefore, DLR has extended the
functionalities of Language Integrated Query (LINQ) expression trees, such as control flow,
assignment, and other language-modeling nodes to a dynamic language. These expression
trees define the semantics of a language in form of an abstract syntax tree (AST). AST
enables the DLR to dynamically generate code, which the CLR executes at runtime.

Call Site Caching - Enables the DLR to store the information of the operations and
characteristics of the variables, such as their data type. The call site caching services also
enables to check whether such operations have been performed previously to retrieve all

the information about the variable. The place where DLR stores these values is called
a call site.

Dynamic Object Interoperability - Enables the DLR to provide a set of classes and
interfaces that represent dynamic objects and operations. These classes and interfaces can
be used to create classes for dynamic libraries, which can be used in static and dynamic
type languages.

5. Name the binders provided by .NET Framework 4.0.


.NET Framework 4.0 provides the following binders:

Object Binder - Enables to communicate with .NET objects.

JavaScript Binder - Enables to communicate with JavaScript in Silverlight.

Python Binder - Enables to communicate with IronPython.

Ruby Binder - Enables to communicate with IronRuby.

COM Binder - Enables to communicate with COM.

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 asdynobj.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.

You might also like