using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MSScriptControl;
namespace ScriptEngine
{
public class Script
{
private ScriptControl msc;
private string _codeBody;
///
///构造函数
///
public Script(string codeBody) : this(ScriptLanguage.JScript, codeBody)
{
}
///
/// 构造函数
///
/// 脚本类型
public Script(ScriptLanguage language, string codeBody)
{
this.msc = new ScriptControl();
this.msc.UseSafeSubset = true;
this.msc.Language = language.ToString();
_codeBody = codeBody;
}
///
/// 运行Eval方法
/// 可以执行方法,对象
///
/// 表达式
/// 函数体
/// 返回值object
public object Eval(string expression)
{
msc.AddCode(_codeBody);
return msc.Eval(expression);
}
///
/// 运行Eval方法
///
/// js表达式,
/// 脚本语言
/// 返回值object
public object Eval(string expression, ScriptLanguage language)
{
msc.AddCode(_codeBody);
if (this.msc.Language != language.ToString())
this.msc.Language = language.ToString();
return Eval(expression);
}
///
/// 运行Run方法
///
/// 入口函数名称
/// 参数
/// 函数体
/// 返回值object
public object Run(string mainFunctionName, params object[] parameters)
{
this.msc.AddCode(_codeBody);
return msc.Run(mainFunctionName, ref parameters);
}
}
}