開発者が JavaScript を介してビジネス ルール トリガーを拡張できるようにするライブラリがあります。基本的に、開発者 (JavaScript) がイベントをサブスクライブし、デリゲートを「これが発生したら電話してください」として渡すことができる関数があります。
私はこれを正常に行うことができますが、関数が JSON または JavaScript オブジェクトを C# レイヤーに戻そうとすると問題が発生します。
基本的に、コードは次の単体テストのように機能します。
Func<String, JsValue> callback = null;
Func<Func<String, JsValue>, object> registerCallback = (o) => callback = o;
Engine engine = new Engine()
.SetValue("registerCallback", registerCallback)
.Execute("registerCallback(function(parameter) { return { \"passed\": parameter }; });");
Assert.IsNotNull(callback);
var result = callback("test");
C# 変数の "result" に、データを含む JsValue またはその他のオブジェクトを含めることができるようにしたいと思いますが、メソッドは例外をスローします。最後の行に IConvertable を実装する必要があります。
「コールバック」が適切なタイプのデリゲートに設定されていることを確認できます: Jint.Native.JsValue lambda_method(System.Runtime.CompilerServices.Closure, System.String)}
また、NULL を返せば問題はありません。私はいくつかの小さな(私がそれを理解したらヘッドバン)欠けている部分があると確信しています...