如何在ScriptScope上设置函数



如何在IronRuby下的ScriptScope上设置委托?我尝试了上面的代码,但在调用函数时出现了ArgumentException。

scope.SetVariable("import", new Action<string>(DSLImport));
import "Data"

此外,我如何使用上面的代码发送块作为对C#代码的回调?

import "Data" do |f|
    f.foo = false
end

我找到了一种可能不是最好的方法,但有效。这是ScriptScope:的扩展方法

public static void SetMethod(this ScriptScope scope, string name, Delegate method)
{
    scope.SetVariable(name + "__delegate", method);
    scope.Engine.Execute("def " + name + "(*args, &block)nargs.push block if block != niln" + name + "__delegate.invoke(*args)nend", scope);
}

相关内容

  • 没有找到相关文章