C#执行js动态编译的方法
程序员文章站
2023-12-14 14:46:28
本文实例讲述了c#执行js动态编译的方法。分享给大家供大家参考。具体实现方法如下:
复制代码 代码如下:using system;
using syste...
本文实例讲述了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;
}
}
}
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#程序设计有所帮助。