Я уверен, что блок Руби не является делегатом c #.
Если вы передаете делегат Ruby, вы должны вызвать его с помощью метода делегата Invoke.
Вот пример кода:
var rt = Ruby.CreateRuntime();
var eng = rt.GetEngine("rb");
eng.Execute(@"
class Blocktest
def test(block)
block.Invoke('HELLO From IronRuby')
end
end
");
dynamic ruby = eng.Runtime.Globals;
dynamic t = ruby.Blocktest.@new();
t.test(new Action<string>(Console.WriteLine));
Можем ли мы преобразовать делегат c # в блок ruby ... Я не знаю.