Вопрос

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

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

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

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

Майкл

Это было полезно?

Решение

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

Убедитесь, что у вас есть ссылки на 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();


        }
    }
}

Обратите внимание: в Runtime есть ExecuteFile, который вы можете использовать для выполнения вашего файла.

Чтобы получить драгоценные камни

  1. Убедитесь, что вы установили свой драгоценный камень, используя igem.exe
  2. вам, вероятно, придется установить некоторые пути поиска, используя Engine.SetSearchPaths
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top