环境:ClearScript, JScript, c#, Windows, Azure
在我启用clearscript的项目中,我有一个Dictionary<string,object>
,我使用它将数据传递到评估的脚本中,在内部和外部。
在c#端,我有
static Dictionary<string, object> Settings = new Dictionary<string, object>();
然后是
JSengine = new JScriptEngine(WindowsScriptEngineFlags.EnableDebugging | WindowsScriptEngineFlags.EnableJITDebugging);
和
JSengine.AddHostObject("CSSettings", Settings);
在JScript这边,我有像
这样的东西CSSettings.Add("your API key", CSConfig.Retrieve("api.key"));
用于设置值。
当前的挑战是更新Dictionary中的值。以下作品
CSSettings.Item("id") = Wfm_AccNumber;
它只是一个非标准的JScript。更重要的是,我在notepad++中使用的JSHint工具有问题。
我可以在.Add()
之前做一个.Remove()
,我想,但是有更好的方法吗?
下面应该可以工作:
CSSettings.Item.set("id", Wfm_AccNumber);
value = CSSettings.Item.get("id"); // or CSSettings.Item("id")
这可能看起来有点笨拙,但它是标准的JavaScript,应该与所有。net索引器(不总是命名为"Item",可以有多个参数)一起工作。