-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathScript.cs
More file actions
69 lines (67 loc) · 2.31 KB
/
Script.cs
File metadata and controls
69 lines (67 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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;
/// <summary>
///构造函数
/// </summary>
public Script(string codeBody) : this(ScriptLanguage.JScript, codeBody)
{
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="language">脚本类型</param>
public Script(ScriptLanguage language, string codeBody)
{
this.msc = new ScriptControl();
this.msc.UseSafeSubset = true;
this.msc.Language = language.ToString();
_codeBody = codeBody;
}
/// <summary>
/// 运行Eval方法
/// 可以执行方法,对象
/// </summary>
/// <param name="expression">表达式</param>
/// <param name="codeBody">函数体</param>
/// <returns>返回值object</returns>
public object Eval(string expression)
{
msc.AddCode(_codeBody);
return msc.Eval(expression);
}
/// <summary>
/// 运行Eval方法
/// </summary>
/// <param name="expression">js表达式,</param>
/// <param name="language">脚本语言</param>
/// <returns>返回值object</returns>
public object Eval(string expression, ScriptLanguage language)
{
msc.AddCode(_codeBody);
if (this.msc.Language != language.ToString())
this.msc.Language = language.ToString();
return Eval(expression);
}
/// <summary>
/// 运行Run方法
/// </summary>
/// <param name="mainFunctionName">入口函数名称</param>
/// <param name="parameters">参数</param>
/// <param name="codeBody">函数体</param>
/// <returns>返回值object</returns>
public object Run(string mainFunctionName, params object[] parameters)
{
this.msc.AddCode(_codeBody);
return msc.Run(mainFunctionName, ref parameters);
}
}
}