0

IronRuby で ScriptScope にデリゲートを設定するにはどうすればよいですか? 上記のコードを試しましたが、関数を呼び出すときに ArgumentException が発生しました。

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

import "Data"

また、C# コードへのコールバックとしてブロックを送信する上記のコードを使用するにはどうすればよいですか?

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

1 に答える 1

0

最善ではないかもしれないが、うまくいく方法を見つけました。これは 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 != nil\n" + name + "__delegate.invoke(*args)\nend", scope);
}
于 2013-02-08T21:29:44.470 に答える