C#アプリケーションでIronPythonをホストしています。 IronPhytonは、ユーザー用にDSLを実装するために使用されます。ホストされたアプリケーションで名前付き引数を使用して関数を呼び出す
Ping(Message = "testOne1")
ホスティングコードは次のようになります:DSLの構文は次のようなものでなければなりません
var engine = Python.CreateEngine();
var scope = engine.CreateScope();
Action<string> ping = (message) => Console.WriteLine(message.ToString());
scope.SetVariable("Ping", ping);
var script = @"
Ping(Message = ""testOne1"")
";
engine.Execute(script, scope);
しかしAction<string>
は、引数の名前を保持していないので、これは動作しません。パラメータ名なしでそれを呼び出すには、期待通りに動作します:
Ping("testOne1")
はどうやって機能を格納し、名前付き引数とそれを呼ぶのですか?
代わりに名前に 'obj'を使用してみてください。これはデリゲート型の変数の名前です。 –
'obj'はユーザーのDSLでうまく見えません:)。実際には引数の名前を指定する方法がない場合、 'Ping(" testOne1 ")'構文を使用するだけです。 –