Как я могу использовать код Ruby в .NET? - PullRequest
4 голосов
/ 18 сентября 2009

Я бы хотел использовать RubyGem в своем приложении на C #.

Я скачал IronRuby, но я не уверен, как начать работу. Их загрузка включает в себя ir.exe, а также некоторые библиотеки DLL, такие как IronRuby.dll.

Как только IronRuby.dll упоминается в моем проекте .NET, как я могу представить объекты и методы файла * .rb моему C # -коду?

Большое спасибо,

Michael

1 Ответ

4 голосов
/ 18 сентября 2009

Вот как вы взаимодействуете:

Убедитесь, что у вас есть ссылки на IronRuby, IronRuby.Libraries, Microsoft.Scripting и Microsoft.Scripting.Core

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IronRuby;
using IronRuby.Builtins;
using IronRuby.Runtime;

namespace ConsoleApplication7 {
    class Program {
        static void Main(string[] args) {
            var runtime = Ruby.CreateRuntime();
            var engine = runtime.GetRubyEngine();

            engine.Execute("def hello; puts 'hello world'; end");

            string s = engine.Execute("hello") as string;
            Console.WriteLine(s);
            // outputs "hello world"

            engine.Execute("class Foo; def bar; puts 'hello from bar'; end; end");
            object o = engine.Execute("Foo.new");
            var operations = engine.CreateOperations();
            string s2 = operations.InvokeMember(o, "bar") as string; 
            Console.WriteLine(s2);
            // outputs "hello from bar"

            Console.ReadKey();


        }
    }
}

Примечание. В среде исполнения есть файл ExecuteFile, который вы можете использовать для запуска вашего файла.

Чтобы заставить работать самоцветы

  1. Убедитесь, что вы установили свой драгоценный камень, используя igem.exe
  2. вам, вероятно, придется установить несколько путей поиска, используя Engine.SetSearchPaths
...