Wie verweisen Sie auf eine Variable, die einem Skriptscope von IronRuby hinzugefügt wurde?
-
27-10-2019 - |
Frage
Ich versuche, dem Zielfernrohr eine Variable hinzuzufügen und dann auf diese Variable aus meinem Rubinausdruck zuzugreifen.
c#
ScriptRuntime runtime = IronRuby.Ruby.CreateRuntime();
var scope = runtime.ExecuteFile("C:\\codebase\\Test\\Test2\\Test2\\person2.rb");
scope.SetVariable("name", "Scott");
dynamic person = scope.Engine.Execute("p = Person.new(name)");
person.sayHi();
Rubin
class Person
def initialize(name)
@name = name.capitalize
end
def sayHi
puts "Hello #{@name}!"
end
end
Lösung
Du warst ziemlich nah. Ändern Sie einfach die letzten beiden Zeilen Ihres C# Code in die nächsten:
dynamic p = scope.Engine.Execute("Person.new(name)", scope);
p.sayHi();
Obwohl ich nicht sicher bin, was Sie erreichen möchten, können Sie Ihre Klasse von C# einfacher verwenden:
var engine = Ruby.CreateEngine();
var scope = engine.ExecuteFile(@"C:\codebase\Test\Test2\Test2\person2.rb");
dynamic globalConstants = engine.Runtime.Globals;
dynamic person = globalConstants.Person.@new("shay");
person.sayHi();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow