C#中如何使用JS腳本


C#中如何使用JS腳本

目前在做的組態軟件中就使用到了js腳本,這部分js腳本是供用戶編寫的,用戶可以通過我們提供的腳本以及js自身的邏輯,用戶就可以隨心所欲的控制設備的運行。有比較了幾款在C#中執行js的庫,最后還是微軟大大自家的Microsoft.JScript這個穩定些,所以就使用Microsoft.JScript;來作為運行js的腳本引擎。
以下是簡單使用的例子:

public object RunByJSCodeProvider(string scriptCode)
        {
            string md5 = DevCommon.MD5GenerateHashString(scriptCode);
            if (this.msjsAssemblyTypeList.ContainsKey(md5))
            {
                Type _evaluateType = this.msjsAssemblyTypeList[md5];
                object obj = _evaluateType.InvokeMember("JsRun", BindingFlags.InvokeMethod,
                        null, null, null);
                return obj;
            }
            else
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("package Stdio{");
                sb.Append(" public class JScript {");
                sb.Append("     public static function JsRun() {");
                sb.Append(scriptCode);
                sb.Append("     }");
                sb.Append(" }");
                sb.Append("}");

                CompilerParameters parameters = new CompilerParameters();

                parameters.GenerateInMemory = true;

                CodeDomProvider _provider = new Microsoft.JScript.JScriptCodeProvider();

                CompilerResults results = _provider.CompileAssemblyFromSource(parameters, sb.ToString());

                Assembly assembly = results.CompiledAssembly;

                Type _evaluateType = assembly.GetType("Stdio.JScript");

                this.msjsAssemblyTypeList.Add(md5, _evaluateType);

                object obj = _evaluateType.InvokeMember("JsRun", BindingFlags.InvokeMethod,
                null, null, null);

                return obj;
            }

代碼已提交至githubZZRRegion/StdioJS


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM