Как передать ExpandoObject из C# в IronRuby?
-
23-09-2019 - |
Вопрос
Выполнение приведенного ниже кода дает мне следующее исключение в последней строке:
ИнвалидОператионИсключение:"несвязанная переменная:ценить"
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
Редактировать: Проверено на себе, в последней версии это работает без проблем