我有什麼方法可以在.NET中運行代碼從字符串?.net 4 - 從字符串運行代碼 - 在C#中/ F#/ IronRuby/IronPython
Console.WriteLine(Compile("1 + 2 * 3")); // results is 7.
我們還有其他的選擇嗎?
- C# - 在運行時編譯代碼?
- IronRuby/IronPython?
- F#?
我有什麼方法可以在.NET中運行代碼從字符串?.net 4 - 從字符串運行代碼 - 在C#中/ F#/ IronRuby/IronPython
Console.WriteLine(Compile("1 + 2 * 3")); // results is 7.
我們還有其他的選擇嗎?
因此,像IronRuby和IronPython這樣的動態語言可以很容易地做你想做的事情。創建一個腳本引擎並執行該字符串。那樣容易。
C#,有可能,使用代碼DOM ...但它每次編譯代碼到DLL中。這是一種代價昂貴的行爲,如果您不對AppDomain做一些棘手的事情,可能會導致您的應用隨着時間的推移而增大內存大小。它可以完成,但我更喜歡在這種方法中使用IronRuby或IronPython。它更簡單。
最後,在C#5.0中,我們期待將編譯器看作是一種託管服務。這意味着您將來可以運行eval(「// c#code」)...但它尚未提供。
希望它有幫助!
結帳NCalc。這是一個你可以包含在你的應用程序中的DLL,它支持多種數學和邏輯運算。 http://ncalc.codeplex.com/
你說用IronPython創建'Eval'函數是很容易的。 – stacker 2010-06-03 13:58:21