2010-03-02 11 views
2

L'exécution du code ci-dessous me donne l'exception suivante sur la dernière ligne:Comment transmettre un ExpandoObject de C# à IronRuby?

InvalidOperationException: "variable non liée: valeur"

var rubyRuntime = Ruby.CreateRuntime(); 
rubyRuntime.UseFile("HandleMoveRequested.rb"); 
var engine = rubyRuntime.GetEngine("rb"); 
dynamic ruby = engine.Runtime.Globals; 

var handler = [email protected](); 

dynamic msg = new ExpandoObject(); 
msg.x = 1; 
msg.y = 2; 

handler.handle(msg); 

Le contenu de HandleMoveRequested.rb sont:

class HandleMoveRequested 
    def handle(msg) 
     System::Console.WriteLine msg.x 
     System::Console.WriteLine msg.y 
    end 
end 

Fondamentalement, je veux juste pouvoir passer un objet complètement dynamique dans la méthode "handle" de cet objet Ruby et avoir accès aux propriétés "x" et "y" cet objet. Est-ce que j'aboie le mauvais arbre?

Répondre

1

J'ai testé votre code (comme-est) après la construction de la dernière de la source: http://github.com/ironruby/ironruby

S'il vous plaît essayer. J'imagine que le correctif sera inclus dans la prochaine RC Build (RC3?) Et plus tard.
Lorsque vous construisez de la source, assurez-vous de construire la "V4 Release" construire avec Ruby4.sln

Edit: me Tested, cela fonctionne sans problème dans le dernier