我被告知由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"));