zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    024.Zabbix告警等级机制
    023.Zabbix自定义(邮箱)脚本告警-02
    022.Zabbix自定义(邮箱)脚本告警01
    021.Zabbix的邮件告警-01
    020.Zabbix的Actions配置
    019.Zabbix的Trigger及相关函数
    018.Zabbix维护时间和模板导入
    017.Zabbix宏介绍
    016.Zabbix聚合监控
    015.Zabbix的日志监控配置
  • 原文地址:https://www.cnblogs.com/zzr-stdio/p/10198033.html
Copyright © 2011-2022 走看看