我被告知由C#和F#源代碼生成的程序集文件可以在編譯爲.NET程序集時互操作。C#,F#,IronPython和IronRuby的集成
- Q1:這是否意味着C#可以像調用C#函數一樣調用F#函數?
- 問題2:IronPython和IronRuby如何?我沒有看到來自IronPython/IronRuby的任何程序集DLL。
- Q3:有沒有簡單的方法使用C#或F#中的IronPython/IronRuby函數?
任何示例代碼都會很棒。
我被告知由C#和F#源代碼生成的程序集文件可以在編譯爲.NET程序集時互操作。C#,F#,IronPython和IronRuby的集成
任何示例代碼都會很棒。
1)是。使用一個簡單的例子,在F#,我可以調用一個C#控制檯應用程序的主要方法:)
open SampleApp
SampleApp.Program.Main([| "Hello"; "World" |])
2對於DLR,我認爲事情是有點不同。我相信這是你如何執行Python(例如);
ScriptEngine engine = Python.CreateEngine();
ScriptSource script = engine.CreateScriptFromSourceFile("myPythonScript.py");
ScriptScope scope = engine.CreateScope();
script.Execute(scope);
我的語法可能有點偏差 - 但你應該能夠得到要點。 3)您需要下載一些特殊的DLR DLL - 然後在您的C#/ F#應用程序中引用它們以便可互操作。它們應該可以從Microsoft DLR站點獲得。
有人告訴我,從C#和F#源所做的彙編文件 是 可互操作的,因爲他們被編譯成 .NET程序集。
是的,你可以在C#中引用F#程序集。當你引用它們時,F#對象等將像C#一樣工作。
您也可以在C#中使用IronPython/Ruby代碼,雖然它與引用程序集有點不同。下面是一個例子:
http://www.highoncoding.com/Articles/573_First_Look_at_the_IronRuby.aspx
問題3:是否有任何簡單的方法從C#或F#使用IronPython/IronRuby函數?
你可能有一個看Embedding IronPython into a C# application
基本上,它做什麼(簡化代碼):
var engine = Python.CreateEngine();
var scriptSource = engine.CreateScriptSourceFromString(@"
def foo(s):
print s", SourceCodeKind.Statements);
var scope = engine.CreateScope();
scriptSource.Execute(scope);
//Get a reference to the function
Func<string, decimal> foo = scope.GetVariable<Func<string, decimal>>("foo");
//Execute it
Console.WriteLine(foo("a"));