C#执行js动态编译的方法

本文实例讲述了C#执行js动态编译的方法。分享给大家供大家参考。具体实现方法如下:

using System;  

using System.CodeDom.Compiler;  

using System.Collections.Generic;  

using System.Linq;  

using System.Reflection;  

using System.Text;  

using System.Threading.Tasks;  

  

namespace webpro  

{  

    public class JScripta  

    {  

        private static readonly CodeDomProvider _provider = new Microsoft.JScript.JScriptCodeProvider();  

        private static Type _evaluateType;  

        private const string scriptStr = @"package fhs  

            {  

                    public class MyJs  

                    {  

                      public static function test1(paramr1)  

                      {   

                            var retString  =   paramr1+ '是无敌的!';  

                            return retString;  

                      }  

    

                    }  

            }";  

        public static object JScriptRun(string jsMethodName,object[] testParams)  

        {  

            //编译的参数  

            CompilerParameters parameters = new CompilerParameters();  

            parameters.GenerateInMemory = true;  

            CompilerResults results = _provider.CompileAssemblyFromSource(parameters, scriptStr);  

            Assembly assembly = results.CompiledAssembly;  

  

            //动态编译脚本中的内容  

            _evaluateType = assembly.GetType("fhs.MyJs");  

  

            //执行指定的方法并传参数  

            object retObj = _evaluateType.InvokeMember(jsMethodName, BindingFlags.InvokeMethod,  

                        null, null, testParams);  

            return retObj;  

        }  

    }  

}

希望本文所述对大家的C#程序设计有所帮助。