Is it possible to call an IronRuby method from C# with a delegate as parameter in such a way that yield
would work?
The following gives me a wrong n
I'm sure Ruby's block is not a c# delegate.
If you pass delegate to Ruby you should invoke it via delegate's Invoke method.
Here is sample code:
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));
Can we convert c# delegate into ruby block... I don't know.
Got an answer by IronRuby core team member Tomáš Matoušek on the IronRuby-core list that it's not possible. Yet.