Интеграция C#, F#, IronPython и IronRuby

Мне сказали, что файлы блока, сделанные из C# и источника F#, совместимы, поскольку они компилируются в блок.NET.

  • Q1: это означает, что C# может вызвать функции F# точно так же, как они - функции C#?
  • Q2: Как насчет IronPython и IronRuby? Я не вижу блока dll от IronPython/IronRuby.
  • Q3: там какой-либо простой способ состоит в том, чтобы использовать функции IronPython/IronRuby от C# или F#?

Любой пример кода был бы большим.

5
задан prosseek 3 June 2010 в 19:40
поделиться

3 ответа

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.

5
ответ дан 13 December 2019 в 22:02
поделиться

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"));
2
ответ дан 13 December 2019 в 22:02
поделиться

Мне сказали, что файлы сборки сделанные из исходников 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

3
ответ дан 13 December 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: