是否可以從C#應用程序(主機)的內部(以及上下文)中輕鬆運行F#腳本。如何在C#應用程序的上下文中運行F#腳本
隨着「的背景下,」我的意思是下面應該是真實的:
- 爲腳本
- 從F#腳本訪問主機應用程序的靜態內容的執行沒有單獨的進程(類,屬性,方法)
基本上我正在尋找類似的這種假設API調用
FSharpScriptRunner.RunInContext(string script);
的API
請幫忙。
-Matthias
是否可以從C#應用程序(主機)的內部(以及上下文)中輕鬆運行F#腳本。如何在C#應用程序的上下文中運行F#腳本
隨着「的背景下,」我的意思是下面應該是真實的:
基本上我正在尋找類似的這種假設API調用
FSharpScriptRunner.RunInContext(string script);
的API
請幫忙。
-Matthias
目前還沒有這樣的API,但你可以很輕鬆地做類似的事情在幾個步驟: -
1)使用F#的CodeDOM,(FSharp.Compiler.CodeDom.dll)提供動力單元,來動態編譯你的腳本。 Power Pack包含apis來編譯單個文件並允許您添加對當前應用程序的引用,從而使腳本可以訪問主機應用程序的類,屬性和方法。
2)編譯階段結束時,你應該在內存中有一個動態程序集。然後,您可以使用反射從腳本創建對象的動態實例並執行它。
你可以做到這一點,但要記住F#不是一種腳本語言,它是一種靜態類型的編譯語言。您提到的用例更適合於像IronJS,IronPython等DLR基礎語言。 – Ankur