などの一連の JavaScript コマンドがあり、JINTdoc.page == 5
を使用して C# アプリケーション内でスクリプトを実行しています。
ただし、私の C# コードでdoc
は、Dictionary<string, object>
. したがって、このようにドット表記を使用することはできません。
私の現在のソリューションは非常に非効率的ですdoc
。JSON 文字列に変換し、それをスクリプトに追加します。はDictionary
非常に大きいため、単純なコマンドを実行するよりもオーバーヘッドが大きくなります。コード例を次に示します。
// Some example data:
var command = "doc.page < 5 || doc.tax < 10 || doc.efile";
var doc = new Dictionary<string, object>(){
{"page", 5},
{"tax", 10},
{"efile", true},
// ... etc ...
};
// Execute the command:
// Convert Dictionary to JSON:
var jsonDoc = new StringBuilder();
jsonDoc.Append("var doc = {");
var first = true;
foreach (var kv in doc) {
if (!first) {
jsonDoc.Append(",");
}
first = false;
jsonDoc.AppendFormat("{0}: {1}", kv.Key, kv.Value);
}
jsonDoc.Append("};");
var je = new JintEngine();
je.Run(jsonDoc.ToString());
var result = je.Run(command);
return result;
これをより効率的に行う方法はありますか?