Мне сказали, что файлы блока, сделанные из C# и источника F#, совместимы, поскольку они компилируются в блок.NET.
Любой пример кода был бы большим.
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) Вам необходимо загрузить некоторые специальные библиотеки DLL DLR, а затем ссылаться на них в своем приложении C # / F # для обеспечения взаимодействия. Они должны быть доступны на сайте Microsoft DLR.
Q3: Есть ли простой способ использовать функции IronPython/IronRuby из C# или F#?
Вы можете взглянуть на Встраивание 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"));
Мне сказали, что файлы сборки сделанные из исходников C# и F# являются совместимыми, поскольку они компилируются в сборку .NET.
Да, вы можете ссылаться на сборку F# в сборке C#. Объекты F# и т.д. будут функционировать как объекты C#, когда вы ссылаетесь на них.
Вы можете получить доступ к коду IronPython/Ruby в C#, хотя это немного отличается от простого обращения к сборке. Here is an example:
http://www.highoncoding.com/Articles/573_First_Look_at_the_IronRuby.aspx