我有一个库,它允许开发人员通过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一旦我弄明白了)缺少一块...