Using System;
Using System. Collections. Generic;
Using System. Text;
Using MSScriptControl;
Namespace MyQuery. CSharpScript
{
/// <Summary>
/// Script running error proxy
/// </Summary>
Public delegate void RunErrorHandler ();
/// <Summary>
/// Script running timeout proxy
/// </Summary>
Public delegate void RunTimeoutHandler ();
/// <Summary>
/// Script Processing Engine
/// By open-source Shengshi-source code download network is developed based on network articles and is a product of learning custom scripts.
/// </Summary>
Public sealed class ScriptEngine
{
Private ScriptControlClass msc;
/// <Summary>
/// Define a script running error event
/// </Summary>
Public event RunErrorHandler RunError;
/// <Summary>
/// Define the script running timeout event
/// </Summary>
Public event RunTimeoutHandler RunTimeout;
/// <Summary>
/// Constructor
/// </Summary>
Public ScriptEngine ()
: This (ScriptLanguage. JavaScript)
{
}
/// <Summary>
/// Constructor
/// </Summary>
/// <Param name = "language"> Script Type </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>
/// Run the Eval Method
/// </Summary>
/// <Param name = "expression"> expression </param>
/// <Param name = "codeBody"> function body </param>
/// <Returns> returned object </returns>
Public object Eval (string expression, string codeBody)
{
Msc. AddCode (codeBody );
Return msc. Eval (expression );
}
/// <Summary>
/// Run the Eval Method
/// </Summary>
/// <Param name = "language"> script language </param>
/// <Param name = "expression"> expression </param>
/// <Param name = "codeBody"> function body </param>
/// <Returns> returned object </returns>
Public object Eval (ScriptLanguage language, string expression, string codeBody)
{
If (this. Language! = Language)
This. Language = language;
Return Eval (expression, codeBody );
}
/// <Summary>
/// Run the Run Method
/// </Summary>
/// <Param name = "mainFunctionName"> name of the entry function </param>
/// <Param name = "parameters"> parameter </param>
/// <Param name = "codeBody"> function body </param>
/// <Returns> returned object </returns>
Public object Run (string mainFunctionName, object [] parameters, string codeBody)
{
This. msc. AddCode (codeBody );
Return msc. Run (mainFunctionName, parameters );
}
/// <Summary>
/// Run the Run Method
/// </Summary>
/// <Param name = "language"> script language </param>
/// <Param name = "mainFunctionName"> name of the entry function </param>
/// <Param name = "parameters"> parameter </param>
/// <Param name = "codeBody"> function body </param>
/// <Returns> returned 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>
/// Discard all Script code and objects that have been added to ScriptControl
/// </Summary>
Public void Reset ()
{
This. msc. Reset ();
}
/// <Summary>
/// Obtain or set the script language
/// </Summary>
Public ScriptLanguage Language
{
Get {return (ScriptLanguage) Enum. Parse (typeof (ScriptLanguage), this. msc. Language, false );}
Set {this. msc. Language = value. ToString ();}
}
/// <Summary>
/// Obtain or set the script execution time, in milliseconds www.2cto.com
/// </Summary>
Public int Timeout
{
Get {return this. msc. Timeout ;}
Set {this. msc. Timeout = value ;}
}
/// <Summary>
/// Set whether to display the user interface elements
/// </Summary>
Public bool AllowUI
{
Get {return this. msc. AllowUI ;}
Set {this. msc. AllowUI = value ;}
}
/// <Summary>
/// Whether the host application has confidentiality requirements
/// </Summary>
Public bool UseSafeSubset
{
Get {return this. msc. UseSafeSubset ;}
Set {this. msc. UseSafeSubset = true ;}
}
/// <Summary>
/// Triggered by the RunError event
/// </Summary>
Private void OnError ()
{
If (RunError! = Null)
RunError ();
}
/// <Summary>
/// OnTimeout event triggered
/// </Summary>
Private void OnTimeout ()
{
If (RunTimeout! = Null)
RunTimeout ();
}
Private void ScriptEngine_Error ()
{
OnError ();
}
Private void ScriptEngine_Timeout ()
{
OnTimeout ();
}
}
/// <Summary>
/// Script language Enumeration
/// </Summary>
Public enum ScriptLanguage
{
/// <Summary>
/// JScript Language
/// </Summary>
JScript,
/// <Summary>
/// VBscript script language
/// </Summary>
VBScript,
/// <Summary>
/// JavaScript script language
/// </Summary>
JavaScript
}
}
Welcome to: http: // 121.18.78.216, which is a demonstration platform for ease of query and analysis, workflow, content management, and project management.
Author Jia Shiyi