使用委托从C#调用IronRuby

使用委托从C#调用IronRuby,c#,delegates,ironruby,yield,C#,Delegates,Ironruby,Yield,是否可以从C#调用IronRuby方法,并将委托作为参数,yield可以工作 下面给出了错误数量的参数(1代表0)异常 Action<string> action = Console.WriteLine; var runtime = Ruby.CreateRuntime(); var engine = runtime.GetEngine("rb"); engine.Execute(@" class YieldTest

是否可以从C#调用IronRuby方法,并将委托作为参数,
yield
可以工作

下面给出了错误数量的参数(1代表0)异常

Action<string> action = Console.WriteLine;
var runtime = Ruby.CreateRuntime();
var engine = runtime.GetEngine("rb");
engine.Execute(@"
                 class YieldTest
                   def test
                     yield 'From IronRuby'
                   end
                 end
                ");
object test = engine.Runtime.Globals.GetVariable("YieldTest");
dynamic t = engine.Operations.CreateInstance(test);
t.test(action);
Action Action=Console.WriteLine;
var runtime=Ruby.CreateRuntime();
var engine=runtime.GetEngine(“rb”);
引擎。执行(@“
类屈服试验
def测试
“来自IronRuby”的产量
结束
结束
");
对象测试=engine.Runtime.Globals.GetVariable(“YieldTest”);
动态t=engine.Operations.CreateInstance(测试);
t、 试验(行动);

我确信Ruby的block不是c#delegate。
如果将委托传递给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));
var rt=Ruby.CreateRuntime();
var eng=rt.GetEngine(“rb”);
执行(@)
类块测试
def测试(块)
Invoke('HELLO From IronRuby')
结束
结束
");
动态ruby=eng.Runtime.Globals;
动态t=ruby.Blocktest@new();
t、 测试(新操作(Console.WriteLine));

我们能把c#委托转换成ruby块吗。。。我不知道。

得到了IronRuby核心列表中成员的回答,这是不可能的。但是。

+1演示如何从IronRuby调用C#委托。仍然很好奇是否有办法从IronRuby中
生成
C#代码。