Frage

Ich mag eine RubyGem in meiner C # .NET-Anwendung verwenden.

Ich habe heruntergeladen IronRuby, aber ich bin nicht sicher, wie man aufstehen und laufen. Ihre Download enthält ir.exe, und es enthält einige DLLs wie IronRuby.dll.

Sobald IronRuby.dll ist in meinem .NET-Projekt verwiesen wird, wie kann ich die Objekte und Methoden einer * .rb Datei auf meinen C # -Code aussetzen?

Vielen Dank,

Michael

War es hilfreich?

Lösung

Dies ist, wie Sie das tun Interop:

Stellen Sie sicher, Refs müssen IronRuby, IronRuby.Libraries, Microsoft.Scripting und 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();


        }
    }
}

Beachten Sie, hat Runtime eine ExecuteFile, die Sie verwenden können, um Ihre Datei auszuführen.

Um die Gems geht

  1. Stellen Sie sicher, dass Sie Ihre gem install mit igem.exe
  2. Sie werden wahrscheinlich einige Suchpfade mit Engine.SetSearchPaths einstellen müssen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top