IronJS には、CommonObject から派生したカスタム オブジェクトがあります。オブジェクトの未定義のプロパティへの呼び出しを傍受し、動的な応答を提供したいと考えています。(当社の状況ではすべてのプロパティを事前登録することはできないため、これは必須です。)
関数をオーバーライドすることで、このオブジェクトの関数呼び出しをキャプチャBoxedValue Get(string name)
し、オブジェクトに事前登録せずに「その場で」関数を提供できます。
propertiesで同じことができることを望んでいますが、どのオーバーライドもこれを処理できないようです。誰かが IronJS について十分な経験を持ち、これにどのようにアプローチできるかを提案してくれることを願っています。
うまくいけば、これで私たちが達成しようとしていることを明確にすることができます:
IronJS.Hosting.CSharp.Context ctx = new IronJS.Hosting.CSharp.Context();
ctx.SetGlobal("data", new MyCustomObject());
string script = @"var x = data.mydynamicproperty;";
ctx.Execute(script);
スクリプトの実行時に、オーバーライドしてカスタム値を返すことができるようにしたいと考えています。例 (MyCustomObject クラス宣言):
public override BoxedValue Get(string name) {
if (name == "mydynamicproperty") {
return BoxedValue.Box("test");
}
}
上記のオーバーライドは関数 (例: var x = data.mydynamicfunction();
) に対して呼び出されますが、プロパティに対しては呼び出されません。
どんな助けや提案も大歓迎です。