CLR은 IL로 컴파일 할 수 있는 언어들을 지원했지만 파이썬, 루비 같이 실행 과정에서 코드를 해석, 실행하는 동적 언어를 지원하지 못함.
DLR은 CLR 위에서 동작하면서 파이썬, 루비 같은 동적 언어를 실행할 수 있도록 도와주는 플랫폼.
동적 언어를 .NET 플랫폼에서 실행할 수 있는 것 뿐 아니라 C#, VB 같은 정적 언어에서 동적 언어의 코드를 통해 만들어진 객체에 접근 가능.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Scripting;
using Microsoft.Scripting.Hosting;
using IronPython.Hosting;
namespace COMInterop
{
class MainApp
{
static void Main(string[] args)
{
ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = engine.CreateScope();
scope.SetVariable("n", "aa");
scope.SetVariable("p", "010");
ScriptSource source = engine.CreateScriptSourceFromString(
@"
class NameCard:
name = ''
phone = ''
def __init__(self, name, phone):
self.name = name
self.phone = phone
def printNameCard(self):
print self.name + ',' + self.phone
NameCard(n,p)
");
dynamic result = source.Execute(scope);
result.printNameCard();
Console.WriteLine("{0},{1}", result.name, result.phone);
}
}
}
댓글