2016-11-08 2 views
0

開発者がJavaScript経由でビジネスルールトリガーを拡張できるようにするライブラリがあります。基本的には、開発者が(JavaScriptで)イベントを購読し、デリゲートを「これが起きたときに私に電話する」ように渡すことができる機能があります。JINTのJavascriptコールバックから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一度私はそれを把握していない)欠けている部分があると確信しています...

答えて

0

変更からSystem.Dynamic.ExpandoObject。これはresultのタイプになり、IDictionary<string, object>に安全にキャストできます。

関連する問題