2011-04-05 2 views
1

런타임에 코드를 컴파일하고 실행중인 응용 프로그램의 객체 (속성 등)를 조작하는 방법을 온라인에서 검색했습니다. Snippy, CodeDom, CSharpCodeProvider를 보았습니다.하지만 내가 원하는대로 애플리케이션에서 이러한 솔루션을 어떻게 사용할 수 있는지 완전히 이해하지 못했습니다. 결론은 런타임에 다른 코드를 바꿀 수 있도록 외부 파일에 코드의 작은 부분을 넣고 싶습니다 (예 : 데이터 등을 조작하는 수식) 누군가가 내게이 코드를 어떻게 구현할 수 있는지 설명 할 수 있습니까? 깔끔한 방식으로 WPF 응용 프로그램에서? 난 그냥 외부 코드를 일부 데이터를 전달해야하고 실행 후 그것은 내가 개체를 채울 수있는 몇 가지 데이터를 반환합니다. P.S : String에서 수식을 파싱하고 그런 식으로 데이터를 조작하는 방법에 대해서도 생각했습니다. 그러나 런타임에 C# 코드를 외부에서 구문 분석하고 실행할 수 있다면 수식과 데이터를 훨씬 더 자유롭게 제어 할 수 있습니다. 미리 감사드립니다.txt 파일에서 실행중인 wpf 응용 프로그램과 인터페이스하도록 C# 코드를 컴파일

답변

4

IronPython 또는 IronRuby과 같은 .NET 호환 동적 언어를 사용하는 것이 더 좋을 것이라고 생각합니다. 이러한 것들은 C#/.NET과 거의 완벽하게 통합되며 실제로 실행 시간 스크립팅 기능을 제공하도록 설계되었습니다. 존 소총의 C# in Depth에서 IronPython의 사용에

사소한 예 :

// the python code 
string python = @" 
text = 'hello' 
output = input + 1 
"; 

// setup the scripting engine 
ScriptEngine engine = Python.CreateEngine(); 
ScriptScope scope = engine.CreateScope(); 
scope.SetVariable("input", 10); 
engine.Execute(python, scope); 

// the results 
Console.WriteLine(scope.GetVariable("text")); 
Console.WriteLine(scope.GetVariable("input")); 
Console.WriteLine(scope.GetVariable("output")); 

없이

말할은 스크립트는 .NET 기본 클래스 라이브러리 및 당신이 그들에 노출 여분의 방법을 사용할 수 있습니다.

+0

대단히 감사합니다. –