2011-04-05 19 views
1

我一直在尋找一種整潔的方式來在運行時編譯代碼並操縱正在運行的應用程序的對象(屬性等)。我遇到了Snippy,CodeDom和CSharpCodeProvider,但我並沒有完全理解如何在應用程序中使用這些解決方案來做我想做的事情。底線是,我想在外部文件中有一小部分代碼,這樣我就可以在運行時換出不同的代碼(例如公式來操作數據等)。有人可以向我解釋我究竟該如何實現這一點在一個整潔的時尚WPF應用程序?我只需要傳遞一些數據的外部代碼,然後執行它就會返回一些可以填充對象的數據。 P.S:我也想過從String中解析數學表達式並以這種方式操縱我的數據,但如果我可以在運行時從外部解析和執行C#代碼,它將給我更多的自由度和對公式和數據的控制權。提前致謝。編譯C#代碼從txt文件到與運行wpf應用程序的接口

回答

4

我想你會使用.NET兼容的動態語言如IronPythonIronRuby做得更好。這些與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

非常感謝你,我會研究這個 – 2011-04-05 20:57:58