IronRuby als Skriptsprache in .NET

8

Ich möchte IronRuby als Skriptsprache verwenden (z. B. als Lua ). NET-Projekt. Ich möchte zum Beispiel in der Lage sein, von einem Ruby-Skript aus bestimmte Ereignisse zu abonnieren, die in der Host-Anwendung ausgelöst werden, und Ruby-Methoden von ihr aufzurufen.

Ich verwende diesen Code, um die IronRuby-Engine zu instanziieren:

%Vor%

Angenommen, index.rb enthält:

%Vor%

Wie mache ich das:

  1. Machen Sie die C # -Methode Abonnieren (in der Host-Anwendung definiert), die von index.rb?
  2. sichtbar ist
  3. Spätere Methode Handler von der Hostanwendung aufrufen?
rubyist111 27.05.2010, 13:05
quelle

1 Antwort

7

Sie können einfach .NET-Ereignisse verwenden und diese in Ihrem IronRuby-Code abonnieren. Wenn Sie beispielsweise das nächste Ereignis in Ihrem C # -Code haben:

%Vor%

Dann in IronRuby können Sie es wie folgt abonnieren:

%Vor%

Um Ihre .NET-Klasse innerhalb Ihres Ruby-Codes verfügbar zu machen, verwenden Sie ScriptScope und fügen Sie Ihre Klasse ( this ) als Variable hinzu und greifen Sie von Ihrem Ruby-Code darauf zu:

%Vor%

Und dann von Ruby:

%Vor%

Um die Demo-Klasse innerhalb des Ruby-Codes verfügbar zu haben, damit Sie sie initialisieren können (Demo.new), müssen Sie die Assembly von IronRuby "auffindbar" machen. Wenn sich die Assembly nicht im GAC befindet, fügen Sie das Assembly-Verzeichnis den Suchpfaden von IronRuby hinzu:

%Vor%

Dann können Sie in Ihrem IronRuby-Code die Assembly anfordern, zum Beispiel: require "DemoAssembly.dll" und dann verwenden Sie sie einfach wie Sie wollen.

    
Shay Friedman 27.05.2010, 15:02
quelle