C#实现脚本计算
来源:互联网 发布:速卖通打单软件 编辑:程序博客网 时间:2024/06/01 09:39
需要引用Interop.MSScriptControl
using System;
using System.Collections.Generic;
using System.Text;
using MSScriptControl;
namespace MyQuery.CSharpScript
{
/// <summary>
/// 脚本运行错误代理
/// </summary>
public delegate void RunErrorHandler();
/// <summary>
/// 脚本运行超时代理
/// </summary>
public delegate void RunTimeoutHandler();
/// <summary>
/// 脚本处理引擎
/// by 开源盛世-源代码下载网 基于网络文章整理开发,是学习自定义脚本的产物
/// </summary>
public sealed class ScriptEngine
{
private ScriptControlClass msc;
/// <summary>
/// 定义脚本运行错误事件
/// </summary>
public event RunErrorHandler RunError;
/// <summary>
/// 定义脚本运行超时事件
/// </summary>
public event RunTimeoutHandler RunTimeout;
/// <summary>
///构造函数
/// </summary>
public ScriptEngine()
: this(ScriptLanguage.JavaScript)
{
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="language">脚本类型</param>
public ScriptEngine(ScriptLanguage language)
{
this.msc = new ScriptControlClass();
this.msc.UseSafeSubset = true;
this.msc.Language = language.ToString();
((DScriptControlSource_Event)this.msc).Error += new DScriptControlSource_ErrorEventHandler(ScriptEngine_Error);
((DScriptControlSource_Event)this.msc).Timeout += new DScriptControlSource_TimeoutEventHandler(ScriptEngine_Timeout);
}
/// <summary>
/// 运行Eval方法
/// </summary>
/// <param name="expression">表达式</param>
/// <param name="codeBody">函数体</param>
/// <returns>返回值object</returns>
public object Eval(string expression, string codeBody)
{
msc.AddCode(codeBody);
return msc.Eval(expression);
}
/// <summary>
/// 运行Eval方法
/// </summary>
/// <param name="language">脚本语言</param>
/// <param name="expression">表达式</param>
/// <param name="codeBody">函数体</param>
/// <returns>返回值object</returns>
public object Eval(ScriptLanguage language, string expression, string codeBody)
{
if (this.Language != language)
this.Language = language;
return Eval(expression, codeBody);
}
/// <summary>
/// 运行Run方法
/// </summary>
/// <param name="mainFunctionName">入口函数名称</param>
/// <param name="parameters">参数</param>
/// <param name="codeBody">函数体</param>
/// <returns>返回值object</returns>
public object Run(string mainFunctionName, object[] parameters, string codeBody)
{
this.msc.AddCode(codeBody);
return msc.Run(mainFunctionName, ref parameters);
}
/// <summary>
/// 运行Run方法
/// </summary>
/// <param name="language">脚本语言</param>
/// <param name="mainFunctionName">入口函数名称</param>
/// <param name="parameters">参数</param>
/// <param name="codeBody">函数体</param>
/// <returns>返回值object</returns>
public object Run(ScriptLanguage language, string mainFunctionName, object[] parameters, string codeBody)
{
if (this.Language != language)
this.Language = language;
return Run(mainFunctionName, parameters, codeBody);
}
/// <summary>
/// 放弃所有已经添加到 ScriptControl 中的 Script 代码和对象
/// </summary>
public void Reset()
{
this.msc.Reset();
}
/// <summary>
/// 获取或设置脚本语言
/// </summary>
public ScriptLanguage Language
{
get { return (ScriptLanguage)Enum.Parse(typeof(ScriptLanguage), this.msc.Language, false); }
set { this.msc.Language = value.ToString(); }
}
/// <summary>
/// 获取或设置脚本执行时间,单位为毫秒
/// </summary>
public int Timeout
{
get { return this.msc.Timeout; }
set { this.msc.Timeout = value; }
}
/// <summary>
/// 设置是否显示用户界面元素
/// </summary>
public bool AllowUI
{
get { return this.msc.AllowUI; }
set { this.msc.AllowUI = value; }
}
/// <summary>
/// 宿主应用程序是否有保密性要求
/// </summary>
public bool UseSafeSubset
{
get { return this.msc.UseSafeSubset; }
set { this.msc.UseSafeSubset = true; }
}
/// <summary>
/// RunError事件激发
/// </summary>
private void OnError()
{
if (RunError != null)
RunError();
}
/// <summary>
/// OnTimeout事件激发
/// </summary>
private void OnTimeout()
{
if (RunTimeout != null)
RunTimeout();
}
private void ScriptEngine_Error()
{
OnError();
}
private void ScriptEngine_Timeout()
{
OnTimeout();
}
}
/// <summary>
/// 脚本语言枚举
/// </summary>
public enum ScriptLanguage
{
/// <summary>
/// JScript脚本语言
/// </summary>
JScript,
/// <summary>
/// VBscript脚本语言
/// </summary>
VBScript,
/// <summary>
/// JavaScript脚本语言
/// </summary>
JavaScript
}
}
构建一个WEB开发的基础框架(主要包括数据库处理、页面框架及工具类),形成ASP.NET信息管理系统快速开发架构。
一、框架实现了基于XML定制的列表查询及图表展现
二、列表实现了复杂查询条件、合并行列(分组求和的处理)、汇总行及钻取数据和图表的钻取
三、编辑配置支持单表数据的增加和修改,针对开发人员实现的编辑页面可方便扩展主表新增字段
使开发人员专注于系统的业务实现,节省开发时间,提高开发效率
试用登录http://121.18.78.216/
您看到的研发管理平台我只用了一个月的时间(还只是正常工作8小时以外的时间)作出来的。
所以自己觉得自己之前开发的用XML配置实现界面,可以使开发人员专注于业务实现,提高信息管理系统开发效率
- C#实现脚本计算
- C#利用js脚本实现配置的文本表达式计算
- C#字符串表达式计算 C#运行脚本
- C#自主脚本实现
- C# 实现脚本辅助功能
- c#计算时间差实现方法
- C# 中实现表达式计算
- unity3D C#脚本实现鼠标拖动物体
- unity3D C#脚本实现鼠标拖动物体
- unity3D C#脚本实现鼠标拖动物体
- Unity3d C# 脚本单体模式的实现
- 数据结构中用C#实现"表达式计算"
- [转载]数据结构中用C#实现"表达式计算"
- C# 实现农历计算和转换
- C#中实现字符串表达式计算
- 用C#实现计算标准正态分布
- 数据结构中用C#实现“表达式计算”
- 数据结构中用C#实现“表达式计算”
- excel 根據匯總數據自動計算等級
- MFC,单文档视图创建顺序
- LVM、checkfs先于ISCSI initiator加载引起的开机错误
- 自定义标签库
- (三)CvSeq数据结构
- C#实现脚本计算
- dlsym RTLD_DEFAULT
- 测试人员应具备的几种思维方式,你是否也具备了?
- window下配置apache+php5.3+memcache
- vc如何派生CWNd类
- Fedora 14 下内核编译 最新内核 kernel 2.6.38以及删除自己编译的内核
- s3c6410存储器映射
- C#调用非托管DLL函数bitblt实现截屏
- 测试leader的职责和技能,对比一下自己