我有一個庫,它允許開發人員通過JavaScript擴展業務規則觸發器。基本上有一個函數允許開發人員(在JavaScript中)訂閱一個事件,並通過一個委託作爲「發生這種情況時給我打電話」。從JINT傳遞JSON回調JSON
我能夠成功地做到這一點,但是當函數試圖將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#變量「結果」可以具有JsValue或其中包含的數據但是所述方法引發異常一些其它物體:必須在最後一行執行IConvertable。
我可以確認「回調」設置爲相應類型的委託:Jint.Native.JsValue lambda_method(System.Runtime.CompilerServices.Closure,System.String)}
而且我沒有問題是否傳回NULL。我敢肯定,有一些微小的(headbang一旦我弄明白了)缺少一塊...