Как передать ExpandoObject из C # в IronRuby? - PullRequest
2 голосов
/ 02 марта 2010

Выполнение кода ниже дает мне следующее исключение в последней строке:

InvalidOperationException: "несвязанная переменная: значение"

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

var handler = ruby.HandleMoveRequested.@new();

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

handler.handle(msg);

Содержимое HandleMoveRequested.rb:

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

По сути, я просто хочу иметь возможность передавать полностью динамический объект в метод "handle" этого объекта Ruby и иметь возможность доступа к свойствам "x" и "y" этого объекта. Я лаю не на том дереве?

1 Ответ

1 голос
/ 03 марта 2010

Я протестировал ваш код (как есть) после сборки последней версии из исходного кода: http://github.com/ironruby/ironruby

Пожалуйста, попробуйте это. Я предполагаю, что исправление будет включено в следующую сборку RC (RC3?) И позже.
При сборке из исходного кода убедитесь, что вы строите сборку "V4 Release", используя Ruby4.sln

Редактировать: Протестировал себя, это работает без проблем в последних

...