.Net 解析 javascript 脚本的方案讨论。
我想的是,,C# 解析 javascript 脚本,,在 js脚本里面能调用 C# 方法。
1,第一个方法。
网上找了好多方法,,都不好用。。msscript.ocx 这个用的人挺多的,,我是试了能调用C#方法。。
但是用 msscript 这个,,脚本运行后,就不能控制了,,我放在单独线程里面,,停止线程也无法中止,Timeout来结束脚本也不行。。。Timeout运行到C#里面就无效了,。而且在网上查了,,貌似同时运行多个脚本,可能会线程不安全。
gg = new ggg("MSScriptControl", new MSScriptControl.ScriptControlClass());
gg.msc.Language = "javascript";
gg.msc.UseSafeSubset = true;
gg.msc.AllowUI = false;
gg.msc.Timeout = Timeout;
gg.msc.AddObject("ms", gg, true);
2,第二个方法。
想尝试用 Microsoft.JScript 来解析脚本,但是不知道如果调用C#方法。
3,目前我使用 Jurassic来解析,各方面功能都完善,还是希望用原生的来解决,,第三方的,涉及到版本兼容性问题。是3.5的,我 .NET2.0 不能用,单独引用 System.Core.dll也不行。。
--------------------编程问答-------------------- 2,第二个方法。
想尝试用 Microsoft.JScript 来解析脚本,但是不知道如何调用C#方法。
主要是交互,,如果没交互性也没什么用了,,要 JS里面能调用 C#的类方法。 --------------------编程问答-------------------- 我还试过了,用 CodeRom 来解析 CS脚本,,但是 C# 是强类型的,,到处都是强制转换脚本一点也不友好。。(int) (bool)
脚本还是用 JS比较好点。。
sb.AppendLine("using System;");
sb.AppendLine("using System.Threading;");
sb.AppendLine("using System.Collections.Generic;");
sb.AppendLine("namespace sx");
sb.AppendLine("{");
sb.AppendLine(" public class api_runtime");
sb.AppendLine(" {");
sb.AppendLine(" public void api_runsc(Dictionary<string, Delegate> dict)");
sb.AppendLine(" {");
sb.AppendLine(" " + cc);
sb.AppendLine(" }");
sb.AppendLine(" }");
sb.AppendLine("}");
补充:.NET技术 , C#