簡體   English   中英

集成C#,F#,IronPython和IronRuby

[英]Integration of C#, F#, IronPython and IronRuby

我被告知,由C#和F#源組成的匯編文件可以互操作,因為它們被編譯成.NET程序集。

  • Q1:這是否意味着C#可以調用F#函數就像它們是C#函數一樣?
  • Q2:IronPython和IronRuby怎么樣? 我沒有看到IronPython / IronRuby中的任何程序集dll。
  • 問題3:有沒有簡單的方法可以使用C#或F#中的IronPython / IronRuby函數?

任何示例代碼都會很棒。

1)是的。 使用一個簡單的例子,在F#中,我可以調用C#控制台應用程序的main方法:

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函數?

您可以查看將IronPython嵌入到C#應用程序中

基本上,它做什么(簡化代碼):

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"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM