Вопрос

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

ИнвалидОператионИсключение:"несвязанная переменная:ценить"

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» этого объекта.Я лаю не на то дерево?

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top