Files
6098/packages/CS-Script.bin.3.30.5.1/lib/net45/CSScriptLibrary.xml

6281 lines
347 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0"?>
<doc>
<assembly>
<name>CSScriptLibrary</name>
</assembly>
<members>
<member name="T:csscript.AssemblyExecutor">
<summary>
Executes "public static void Main(..)" of assembly in a separate domain.
</summary>
</member>
<member name="T:csscript.RemoteExecutor">
<summary>
Invokes static method 'Main' from the assembly.
</summary>
</member>
<member name="M:csscript.RemoteExecutor.ResolveEventHandler(System.Object,System.ResolveEventArgs)">
<summary>
AppDomain event handler. This handler will be called if CLR cannot resolve
referenced local assemblies
</summary>
</member>
<member name="T:csscript.CSharpParser">
<summary>
Very light parser for C# code. The main purpose of it is to be very fast and reliable.
It only extracts code information relative to the CS-Script.
</summary>
</member>
<member name="T:csscript.CSharpParser.CmdScriptInfo">
<summary>
Class to hold the script information on what pre- or post-execution script needs to be executed.
pre- and post-script CS-Script command format:
//css_prescript file([arg0][, arg1]..[,arg2])[,ignore];
//file - script file (extension is optional)
//arg0..N - script string arguments;
If $this is specified as arg0..N it will be replaced with the parent script full name at execution time.
</summary>
</member>
<member name="M:csscript.CSharpParser.CmdScriptInfo.#ctor(System.String,System.Boolean,System.String)">
<summary>
Creates an instance of CmdScriptInfo.
</summary>
<param name="statement">CS-Script pre- or post-script directive</param>
<param name="preScript">If set to true the 'statement' is a pre-script otherwise it is a post-script.</param>
<param name="parentScript">The file name of the main script.</param>
</member>
<member name="F:csscript.CSharpParser.CmdScriptInfo.args">
<summary>
Script file and it's arguments.
</summary>
</member>
<member name="F:csscript.CSharpParser.CmdScriptInfo.preScript">
<summary>
If set to 'true' the CmdScriptInfo describes the pre-script, otherwise it is for the post-script.
</summary>
</member>
<member name="F:csscript.CSharpParser.CmdScriptInfo.abortOnError">
<summary>
If set to 'true' parent script will be aborted on pre/post-script error, otherwise the error will be ignored.
</summary>
</member>
<member name="T:csscript.CSharpParser.InitInfo">
<summary>
Class to hold the script initialization information.
</summary>
</member>
<member name="F:csscript.CSharpParser.InitInfo.CoInitializeSecurity">
<summary>
The boolean flag indicating if CoInitializeSecurity (with default parameters) should be called at the start of the script execution.
</summary>
</member>
<member name="F:csscript.CSharpParser.InitInfo.RpcImpLevel">
<summary>
The RpcImpLevel of CoInitializeSecurity arguments
</summary>
</member>
<member name="F:csscript.CSharpParser.InitInfo.EoAuthnCap">
<summary>
The EoAuthnCap of CoInitializeSecurity arguments
</summary>
</member>
<member name="M:csscript.CSharpParser.InitInfo.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:csscript.CSharpParser.InitInfo"/> class.
</summary>
<param name="statement">The original argument statement of the <c>//css_init</c> directive.</param>
</member>
<member name="T:csscript.CSharpParser.ImportInfo">
<summary>
Class to hold the script importing information, which actually controls how script is imported.
</summary>
</member>
<member name="F:csscript.CSharpParser.ImportInfo.ResolveRelativeFromParentScriptLocation">
<summary>
<para> When importing/referencing dependencies with '//css_include', '//css_import' or '//css_reference' you can use relative path.
Resolving relative path is typically done with respect to the <c>current directory</c>.
</para>
<para>
The only exception is any path that starts with a single dot ('.') prefix, which triggers the conversion of the path into the absolute path
with respect to the location of the file containing the import directive.
</para>
<para>Set <see cref="F:csscript.CSharpParser.ImportInfo.ResolveRelativeFromParentScriptLocation"/> to <c>true</c> if you want to convert all relative paths
into the absolute path, not only the ones with a single dot ('.') prefix.</para>
<para>By default it is set to <c>false</c> unless overwritten via the global settings.</para>
</summary>
</member>
<member name="M:csscript.CSharpParser.ImportInfo.#ctor(System.String,System.String)">
<summary>
Creates an instance of ImportInfo.
</summary>
<param name="statement">CS-Script import directive (//css_import...) string.</param>
<param name="parentScript">name of the parent (primary) script file.</param>
</member>
<member name="M:csscript.CSharpParser.ImportInfo.#ctor(System.String,System.String,System.String)">
<summary>
Creates an instance of ImportInfo.
</summary>
<param name="statement">CS-Script import directive (//css_import...) string.</param>
<param name="parentScript">name of the parent (primary) script file.</param>
<param name="context">The context string to be injected in the exception message if raised.</param>
</member>
<member name="F:csscript.CSharpParser.ImportInfo.file">
<summary>
The file to be imported.
</summary>
</member>
<member name="F:csscript.CSharpParser.ImportInfo.rawStatement">
<summary>
The original name of the file to be imported.
</summary>
</member>
<member name="F:csscript.CSharpParser.ImportInfo.parentScript">
<summary>
The name of the script containing the import statement.
</summary>
</member>
<member name="F:csscript.CSharpParser.ImportInfo.renaming">
<summary>
Renaming instructions (old_name vs. new_name)
</summary>
</member>
<member name="F:csscript.CSharpParser.ImportInfo.preserveMain">
<summary>
If set to 'true' "static...Main" in the imported script is not renamed.
</summary>
</member>
<member name="M:csscript.CSharpParser.#ctor(System.String)">
<summary>
Creates an instance of CSharpParser.
</summary>
<param name="code">C# code string</param>
</member>
<member name="M:csscript.CSharpParser.#ctor(System.String,System.Boolean)">
<summary>
Creates an instance of CSharpParser.
</summary>
<param name="script">C# script (code or file).</param>
<param name="isFile">If set to 'true' the script is a file, otherwise it is a C# code.</param>
</member>
<member name="M:csscript.CSharpParser.LoadFile(System.String)">
<summary>
Loads and parses the file the file.
</summary>
<param name="script">The script.</param>
<returns>Parser object containing parsing result.</returns>
</member>
<member name="M:csscript.CSharpParser.#ctor(System.String,System.Boolean,System.String[])">
<summary>
Creates an instance of CSharpParser.
</summary>
<param name="script">C# script (code or file).</param>
<param name="isFile">If set to 'true' the script is a file, otherwise it is a C# code.</param>
<param name="directivesToSearch">Additional C# script directives to search. The search result is stored in CSharpParser.CustomDirectives.</param>
</member>
<member name="M:csscript.CSharpParser.#ctor(System.String,System.Boolean,System.String[],System.String[])">
<summary>
Creates an instance of CSharpParser.
</summary>
<param name="script">C# script (code or file).</param>
<param name="isFile">If set to 'true' the script is a file, otherwise it is a C# code.</param>
<param name="directivesToSearch">Additional C# script directives to search. The search result is stored in CSharpParser.CustomDirectives.</param>
<param name="probingDirs">Search directories for resolving wild card paths in //css_inc and //css_imp</param>
</member>
<member name="F:csscript.CSharpParser.CustomDirectives">
<summary>
The result of search for additional C# script directives to search (directive vs. value).
</summary>
</member>
<member name="F:csscript.CSharpParser.SuppressCodeAnalysis">
<summary>
Global flag to forcefully suppress any C# code analyzes. This flag effectively disables
all CS-Script assembly and script probing and most likely some other functionality.
<para>You may ever want to suppress code analysis only for profiling purposes or during performance tuning.</para>
</summary>
</member>
<member name="F:csscript.CSharpParser.SupressCodeAnalysis">
<summary>
Global flag to forcefully suppress any C# code analyzes. This flag effectively disables
all CS-Script assembly and script probing and most likely some other functionality.
<para>You may ever want to suppress code analysis only for profiling purposes or during performance tuning.</para>
</summary>
</member>
<member name="M:csscript.CSharpParser.Init(System.String,System.String,System.String[],System.String[])">
<summary>
Parses the C# code.
</summary>
<param name="code">C# script (code or file).</param>
<param name="file">If set to 'true' the script is a file, otherwise it is a C# code.</param>
<param name="directivesToSearch">Additional C# script directives to search. The search result is stored in CSharpParser.CustomDirectives.</param>
<param name="probingDirs">Search directories for resolving wild card paths in //css_inc and //css_imp</param>
</member>
<member name="M:csscript.CSharpParser.DoRenaming(System.String[][],System.Boolean)">
<summary>
Renames namespaces according renaming instructions.
</summary>
<param name="renamingMap">Renaming instructions (old_name vs. new_name).</param>
<param name="preserveMain">/// If set to 'true' "static...Main" in the imported script is not renamed.</param>
</member>
<member name="P:csscript.CSharpParser.Args">
<summary>
Embedded script arguments. The both script and engine arguments are allowed except "/noconfig" engine command line switch.
</summary>
</member>
<member name="P:csscript.CSharpParser.CompilerOptions">
<summary>
Embedded compiler options.
</summary>
</member>
<member name="P:csscript.CSharpParser.HostOptions">
<summary>
Embedded compiler options.
</summary>
</member>
<member name="P:csscript.CSharpParser.Precompilers">
<summary>
Precompilers.
</summary>
</member>
<member name="P:csscript.CSharpParser.References">
<summary>
References to the external assemblies and namespaces.
</summary>
</member>
<member name="P:csscript.CSharpParser.RefAssemblies">
<summary>
References to the external assemblies.
</summary>
</member>
<member name="P:csscript.CSharpParser.IgnoreNamespaces">
<summary>
Names of namespaces to be ignored by namespace-to-assembly resolver.
</summary>
</member>
<member name="P:csscript.CSharpParser.ExtraSearchDirs">
<summary>
Additional search directories (for script and assembly probing).
</summary>
</member>
<member name="P:csscript.CSharpParser.ResFiles">
<summary>
References to the resource files.
</summary>
</member>
<member name="P:csscript.CSharpParser.RefNamespaces">
<summary>
References to the namespaces.
</summary>
</member>
<member name="P:csscript.CSharpParser.NuGets">
<summary>
References to the NuGet packages.
</summary>
</member>
<member name="P:csscript.CSharpParser.Imports">
<summary>
C# scripts to be imported.
</summary>
</member>
<member name="P:csscript.CSharpParser.CmdScripts">
<summary>
Pre- and post-execution scripts.
</summary>
</member>
<member name="P:csscript.CSharpParser.Inits">
<summary>
Script initialization directives.
</summary>
</member>
<member name="P:csscript.CSharpParser.ThreadingModel">
<summary>
Apartment state of the script.
</summary>
</member>
<member name="P:csscript.CSharpParser.AutoClassMode">
<summary>
Gets the `auto-class` decoration mode value.
</summary>
</member>
<member name="P:csscript.CSharpParser.Code">
<summary>
Script C# raw code.
</summary>
</member>
<member name="P:csscript.CSharpParser.ModifiedCode">
<summary>
Script C# code after namespace renaming.
</summary>
</member>
<member name="F:csscript.CSharpParser.OpenEndDirectiveSyntax">
<summary>
Enables omitting closing character (";") for CS-Script directives (e.g. "//css_ref System.Xml.dll" instead of "//css_ref System.Xml.dll;").
</summary>
</member>
<member name="M:csscript.CSharpParser.EscapeDirectiveDelimiters(System.String)">
<summary>
Escapes the CS-Script directive (e.g. //css_*) delimiters.
<para>All //css_* directives should escape any internal CS-Script delimiters by doubling the delimiter character.
For example //css_include for 'script(today).cs' should escape brackets as they are the directive delimiters.
The correct syntax would be as follows '//css_include script((today)).cs;'</para>
<remarks>The delimiters characters are ';,(){}'.
<para>However you should check <see cref="F:csscript.CSharpParser.DirectiveDelimiters"/> for the accurate list of all delimiters.
</para>
</remarks>
</summary>
<param name="text">The text to be processed.</param>
<returns></returns>
</member>
<member name="M:csscript.CSharpParser.UserToInternalEscaping(System.String)">
<summary>
Replaces the user escaped delimiters with internal escaping.
<p> "{char}{char}" -> "\u{((int)c).ToString("x4")}"</p>
<p> "((" -> "\u0028"</p>
</summary>
<param name="text">The text.</param>
<returns></returns>
</member>
<member name="M:csscript.CSharpParser.UnescapeDirectiveDelimiters(System.String)">
<summary>
Unescapes the CS-Script directive (e.g. //css_*) delimiters.
<para>All //css_* directives should escape any internal CS-Script delimiters by doubling the delimiter character.
For example //css_include for 'script(today).cs' should escape brackets as they are the directive delimiters.
The correct syntax would be as follows '//css_include script((today)).cs;'</para>
<remarks>The delimiters characters are ';,(){}'.
<para>However you should check <see cref="F:csscript.CSharpParser.DirectiveDelimiters"/> for the accurate list of all delimiters.
</para>
</remarks>
</summary>
<param name="text">The text to be processed.</param>
<returns></returns>
</member>
<member name="F:csscript.CSharpParser.DirectiveDelimiters">
<summary>
The //css_* directive delimiters.
<remarks>All //css_* directives should escape any internal CS-Script delimiters by doubling the delimiter character.
For example //css_include for 'script(today).cs' should escape brackets as they are the directive delimiters.
The correct syntax would be as follows '//css_include script((today)).cs;'
</remarks>
</summary>
</member>
<member name="T:csscript.ResolveSourceFileAlgorithm">
<summary>
Delegate implementing source file probing algorithm.
</summary>
<param name="file">The file.</param>
<param name="searchDirs">The extra dirs.</param>
<param name="throwOnError">if set to <c>true</c> [throw on error].</param>
<returns></returns>
</member>
<member name="T:csscript.ResolveAssemblyHandler">
<summary>
Delegate implementing assembly file probing algorithm.
</summary>
<param name="file">The file.</param>
<param name="searchDirs">The extra dirs.</param>
<returns></returns>
</member>
<member name="T:csscript.CSExecutor">
<summary>
CSExecutor is an class that implements execution of *.cs files.
</summary>
</member>
<member name="P:csscript.CSExecutor.Rethrow">
<summary>
Force caught exceptions to be re-thrown.
</summary>
</member>
<member name="M:csscript.CSExecutor.Execute(System.String[],csscript.PrintDelegate,System.String)">
<summary>
The main entry point for the application.
</summary>
</member>
<member name="M:csscript.CSExecutor.GetCustomAppConfig(System.String[])">
<summary>
Returns custom application config file.
</summary>
</member>
<member name="M:csscript.CSExecutor.VoidPrint(System.String)">
<summary>
Dummy 'print' to suppress displaying application messages.
</summary>
</member>
<member name="F:csscript.CSExecutor.lastException">
<summary>
This method implements compiling and execution of the script.
</summary>
</member>
<member name="M:csscript.CSExecutor.ExecuteImpl">
<summary>
This method implements compiling and execution of the script.
</summary>
</member>
<member name="M:csscript.CSExecutor.Compile(System.String,System.String,System.Boolean)">
<summary>
Compiles C# script file into assembly.
</summary>
</member>
<member name="F:csscript.CSExecutor.scriptArgs">
<summary>
C# Script arguments array (sub array of application arguments array).
</summary>
</member>
<member name="F:csscript.CSExecutor.print">
<summary>
Callback to print application messages to appropriate output.
</summary>
</member>
<member name="F:csscript.CSExecutor.options">
<summary>
Container for parsed command line arguments
</summary>
</member>
<member name="F:csscript.CSExecutor.rethrow">
<summary>
Flag to force to rethrow critical exceptions
</summary>
</member>
<member name="M:csscript.CSExecutor.#ctor">
<summary>
Constructor
</summary>
</member>
<member name="M:csscript.CSExecutor.#ctor(System.Boolean,csscript.ExecuteOptions)">
<summary>
Constructor
</summary>
</member>
<member name="M:csscript.CSExecutor.GetAvailableAssembly(System.String)">
<summary>
Checks/returns if compiled C# script file (ScriptName + ".compiled") available and valid.
</summary>
</member>
<member name="M:csscript.CSExecutor.Compile(System.String)">
<summary>
Compiles C# script file.
</summary>
</member>
<member name="M:csscript.CSExecutor.GetScriptTempFile">
<summary>
Returns the name of the temporary file in the CSSCRIPT subfolder of Path.GetTempPath().
</summary>
<returns>Temporary file name.</returns>
</member>
<member name="M:csscript.CSExecutor.GetScriptTempDir">
<summary>
Returns the name of the temporary folder in the CSSCRIPT subfolder of Path.GetTempPath().
<para>Under certain circumstances it may be desirable to the use the alternative location for the CS-Script temporary files.
In such cases use SetScriptTempDir() to set the alternative location.
</para>
</summary>
<returns>Temporary directory name.</returns>
</member>
<member name="M:csscript.CSExecutor.SetScriptTempDir(System.String)">
<summary>
Sets the location for the CS-Script temporary files directory.
</summary>
<param name="path">The path for the temporary directory.</param>
</member>
<member name="M:csscript.CSExecutor.GetCacheDirectory(System.String)">
<summary>
Generates the name of the cache directory for the specified script file.
</summary>
<param name="file">Script file name.</param>
<returns>Cache directory name.</returns>
</member>
<member name="P:csscript.CSExecutor.ScriptCacheDir">
<summary>
Contains the name of the temporary cache folder in the CSSCRIPT subfolder of Path.GetTempPath(). The cache folder is specific for every script file.
</summary>
</member>
<member name="M:csscript.CSExecutor.SetScriptCacheDir(System.String)">
<summary>
Generates the name of the temporary cache folder in the CSSCRIPT subfolder of Path.GetTempPath(). The cache folder is specific for every script file.
</summary>
<param name="scriptFile">script file</param>
</member>
<member name="M:csscript.CSExecutor.ShowHelpFor(System.String)">
<summary>
Prints Help info.
</summary>
</member>
<member name="M:csscript.CSExecutor.ShowHelp(System.String,System.Object[])">
<summary>
Prints CS-Script specific C# syntax help info.
</summary>
</member>
<member name="M:csscript.CSExecutor.ShowSample(System.String)">
<summary>
Show sample C# script file.
</summary>
</member>
<member name="M:csscript.CSExecutor.ShowPrecompilerSample">
<summary>
Show sample precompiler C# script file.
</summary>
</member>
<member name="M:csscript.CSExecutor.DoCacheOperations(System.String)">
<summary>
Performs the cache operations and shows the operation output.
</summary>
<param name="command">The command.</param>
</member>
<member name="M:csscript.CSExecutor.CreateDefaultConfigFile">
<summary>
Creates the default config file in the CurrentDirectory.
</summary>
</member>
<member name="M:csscript.CSExecutor.PrintDefaultConfig">
<summary>
Prints the config file default content.
</summary>
</member>
<member name="M:csscript.CSExecutor.ShowVersion">
<summary>
Show CS-Script version information.
</summary>
</member>
<member name="T:csscript.InvalidDirectiveException">
<summary>
The exception that is thrown when an incvalid CS-Script directive is encountered.
</summary>
<seealso cref="T:csscript.CompilerException" />
</member>
<member name="M:csscript.InvalidDirectiveException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:csscript.InvalidDirectiveException"/> class.
</summary>
<param name="message">The message.</param>
</member>
<member name="T:csscript.CLIException">
<summary>
The exception that is thrown when a the script CLI error occurs.
</summary>
</member>
<member name="T:csscript.CompilerException">
<summary>
The exception that is thrown when a the script compiler error occurs.
</summary>
</member>
<member name="M:csscript.CompilerException.#ctor">
<summary>
Initializes a new instance of the <see cref="T:csscript.CompilerException"/> class.
</summary>
</member>
<member name="M:csscript.CompilerException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Initializes a new instance of the <see cref="T:csscript.CompilerException"/> class.
</summary>
<param name="info">The object that holds the serialized object data.</param>
<param name="context">The contextual information about the source or destination.</param>
</member>
<member name="M:csscript.CompilerException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:csscript.CompilerException"/> class.
</summary>
<param name="message">The message.</param>
</member>
<member name="P:csscript.CompilerException.ErrorCount">
<summary>
Gets or sets the error count associated with the last script compilation.
</summary>
<value>The error count.</value>
</member>
<member name="M:csscript.CompilerException.Create(System.CodeDom.Compiler.CompilerErrorCollection,System.Boolean,System.Boolean)">
<summary>
Creates the CompilerException instance from the specified compiler errors.
</summary>
<param name="Errors">The compiler errors.</param>
<param name="hideCompilerWarnings">if set to <c>true</c> hide compiler warnings.</param>
<param name="resolveAutogenFilesRefs">if set to <c>true</c> all references to the path of the derived auto-generated files
(e.g. errors in the decorated classless scripts) will be replaced with the path of the original files (e.g. classless script itself).</param>
<returns></returns>
</member>
<member name="T:csscript.ConcurrencyControl">
<summary>
Indicates synchronization model used to for controlling concurrency when the same script file is executed by multiple processes.
</summary>
</member>
<member name="F:csscript.ConcurrencyControl.Standard">
<summary>
Simple model. The script engine doesn't start the timestamp validation and the script compilation until another engine
validating finishes its job.
<para>
Note: the compilation may be skipped if caching is enabled and the validation reviles that the previous compilation (cache)
is still up to date. </para>
<para>
Due to the limited choices with the system wide named synchronization objects on Linux <c>Standard</c> is the only available
synchronization model on Linux. And it is just happens to be a good default choice for Windows as well.</para>
</summary>
</member>
<member name="F:csscript.ConcurrencyControl.HighResolution">
<summary>
A legacy synchronization model available on Windows only. While it can be beneficial in the intense concurrent "border line" scenarios,
its practical value very limited.
</summary>
</member>
<member name="F:csscript.ConcurrencyControl.None">
<summary>
No concurrency control is done by the script engine. All synchronization is the responsibility of the hosting environment.
</summary>
</member>
<member name="T:csscript.ExecuteOptions">
<summary>
Application specific runtime settings
</summary>
</member>
<member name="T:csscript.ConsoleStringExtensions">
<summary>
Based on "maettu-this" proposal https://github.com/oleg-shilo/cs-script/issues/78
His `SplitLexicallyWithoutTakingNewLineIntoAccount` is taken/used practically without any change.
</summary>
</member>
<member name="T:csscript.COM">
<summary>
COM HR checker: just to make code more compact;
</summary>
</member>
<member name="T:csscript.IAssemblyCache">
<summary>
IAssemblyCache; COM import
</summary>
</member>
<member name="T:csscript.IAssemblyName">
<summary>
IAssemblyName; COM import
</summary>
</member>
<member name="T:csscript.IAssemblyEnum">
<summary>
IAssemblyEnum; COM import
</summary>
</member>
<member name="T:csscript.AssemblyCommitFlags">
<summary>
AssemblyCommitFlags; Used by COM imported calls
</summary>
</member>
<member name="T:csscript.AssemblyCacheFlags">
<summary>
AssemblyCacheFlags; Used by COM imported calls
</summary>
</member>
<member name="T:csscript.AssemblyCacheUninstallDisposition">
<summary>
AssemblyCacheUninstallDisposition; Used by COM imported calls
</summary>
</member>
<member name="T:csscript.CreateAssemblyNameObjectFlags">
<summary>
CreateAssemblyNameObjectFlags; Used by COM imported calls
</summary>
</member>
<member name="T:csscript.AssemblyNameDisplayFlags">
<summary>
AssemblyNameDisplayFlags; Used by COM imported calls
</summary>
</member>
<member name="T:csscript.InstallReference">
<summary>
InstallReference + struct initialization; Used by COM imported calls
</summary>
</member>
<member name="T:csscript.AssemblyInfo">
<summary>
AssemblyInfo; Used by COM imported calls
</summary>
</member>
<member name="T:csscript.InstallReferenceGuid">
<summary>
InstallReferenceGuid; Used by COM imported calls
</summary>
</member>
<member name="T:csscript.AssemblyCache">
<summary>
Helper class for IAssemblyCache
</summary>
</member>
<member name="T:csscript.AssemblyEnum">
<summary>
Helper class for IAssemblyEnum
</summary>
</member>
<member name="M:csscript.NuGet.GetPackageCompatibleLib(csscript.NuGet.PackageInfo)">
<summary>
Gets the package compatible library. Similar to `GetCompatibleTargetFramework` but relies on file structure
</summary>
<param name="package">The package.</param>
<returns></returns>
</member>
<member name="M:csscript.NuGet.GetSinglePackageLibDirs(csscript.NuGet.PackageInfo,System.String)">
<summary>
Gets the single package library dirs.
</summary>
<param name="package">The package.</param>
<param name="rootDir">The root dir.</param>
<returns></returns>
</member>
<member name="T:csscript.PrecompilationContext">
<summary>
This class is a container for information related to the script pre-compilation.
<para>It is used to pass an input information from the script engine to the <c>precompiler</c> instance as well as to pass back
to the script engine some output information (e.g. added referenced assemblies)</para> .
</summary>
</member>
<member name="F:csscript.PrecompilationContext.NewReferences">
<summary>
Collection of the referenced assemblies to be added to the process script referenced assemblies.
<para>You may want to add new items to the referenced assemblies because of the pre-compilation logic (e.g. some code using assemblies not referenced by the primary script
is injected in the script).</para>
</summary>
</member>
<member name="F:csscript.PrecompilationContext.NewDependencies">
<summary>
Collection of the new dependency items (files).
<para>Dependency files are checked before the script execution in order to understand if the script should be recompiled or it can be loaded from
the cache. If any of the dependency files is changed since the last script execution the script engine will recompile the script. In the simple execution
scenarios the script file is a dependency file.</para>
</summary>
</member>
<member name="F:csscript.PrecompilationContext.NewIncludes">
<summary>
Collection of the new 'include' items (dependency source files).
</summary>
</member>
<member name="F:csscript.PrecompilationContext.NewSearchDirs">
<summary>
Collection of the assembly and script probing directories to be added to the process search directories.
<para>You may want to add new items to the process search directories because of the pre-compilation logic.</para>
</summary>
</member>
<member name="F:csscript.PrecompilationContext.NewCompilerOptions">
<summary>
Additional compiler options to be passed to the script compiler
</summary>
</member>
<member name="F:csscript.PrecompilationContext.SearchDirs">
<summary>
Collection of the process assembly and script probing directories.
</summary>
</member>
<member name="T:csscript.AutoclassGenerator">
<summary>
AutoclassGenerator to be used by external applications for generating the auto-class from the classless scripts
</summary>
</member>
<member name="M:csscript.AutoclassGenerator.Process(System.String,System.Int32@,System.Int32@)">
<summary>
Processes the specified code.
</summary>
<param name="code">The code.</param>
<param name="injectionPos">The injection position.</param>
<param name="injectionLength">Length of the injection.</param>
<returns></returns>
</member>
<member name="M:csscript.AutoclassGenerator.Process(System.String,System.Int32@)">
<summary>
Processes the specified code.
</summary>
<param name="code">The code.</param>
<param name="position">The position.</param>
<returns></returns>
</member>
<member name="F:csscript.AutoclassGenerator.ConsoleEncoding">
<summary>
The console encoding to be set for at the script initialization.
</summary>
</member>
<member name="T:csscript.Project">
<summary>
Class that holds all information about the execution context
(probing directories and dependencies) of a script.
</summary>
</member>
<member name="F:csscript.Project.Script">
<summary>
Primary script that defines the project.
</summary>
</member>
<member name="F:csscript.Project.Files">
<summary>
List of all C# sources defined by the project. This
includes the primary script itself and all other scripts files the imported/included
by the primary script.
</summary>
</member>
<member name="F:csscript.Project.Refs">
<summary>
List of assemblies the script of the project is referencing.
</summary>
</member>
<member name="F:csscript.Project.SearchDirs">
<summary>
List of search folders where CS-Script does probing for
imported/included scripts and assemblies.
</summary>
</member>
<member name="M:csscript.Project.GenerateProjectFor(System.String)">
<summary>
Generates the top level view project for a given script.
<para>
Note this method uses the same algorithm as CS-Script executor but it deliberately doesn't
include cached directories and auto-generated files. This method is to be used by IDs and tools.
</para>
</summary>
<param name="script">The script.</param>
<returns></returns>
</member>
<member name="M:csscript.ProjectBuilder.GetCSSConfig">
<summary>
Gets the CSS configuration. Used by ST3 Syntaxer
</summary>
<returns></returns>cls
</member>
<member name="T:csscript.Settings">
<summary>
Settings is an class that holds CS-Script application settings.
</summary>
</member>
<member name="P:csscript.Settings.CleanupShellCommand">
<summary>
Command to be executed to perform custom cleanup.
If this value is empty automatic cleanup of all
temporary files will occurs after the script execution.
This implies that the script has to be executed in the
separate AppDomain and some performance penalty will be incurred.
Setting this value to the command for custom cleanup application
(e.g. csc.exe cleanTemp.cs) will force the script engine to execute
script in the 'current' AppDomain what will improve performance.
</summary>
</member>
<member name="M:csscript.Settings.ExpandCleanupShellCommand">
<summary>
Returns value of the CleanupShellCommand (with expanding environment variables).
</summary>
<returns>shell command string</returns>
</member>
<member name="P:csscript.Settings.DoCleanupAfterNumberOfRuns">
<summary>
This value indicates frequency of the custom cleanup
operation. It has affect only if CleanupShellCommand is not empty.
</summary>
</member>
<member name="P:csscript.Settings.UseAlternativeCompiler">
<summary>
Location of alternative code provider assembly. If set it forces script engine to use an alternative code compiler.
</summary>
</member>
<member name="P:csscript.Settings.RoslynDir">
<summary>
Gets or sets the path to the Roslyn directory. This setting is used to redirect Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll to the
custom location of the Roslyn compilers (e.g. /usr/lib/mono/4.5).
</summary>
<value>
The Roslyn directory.
</value>
</member>
<member name="P:csscript.Settings.ResolveRelativeFromParentScriptLocation">
<summary>
<para> When importing dependency scripts with '//css_include' or '//css_import' you can use relative path.
Resolving relative path is typically done with respect to the <c>current directory</c>.
</para>
<para>
The only exception is any path that starts with a single dot ('.') prefix, which triggers the conversion of the path into the absolute path
with respect to the location of the file containing the import directive.
</para>
<para>Set <see cref="P:csscript.Settings.ResolveRelativeFromParentScriptLocation"/> to <c>true</c> if you want to convert all relative paths
into the absolute path, not only the ones with a single dot ('.') prefix.</para>
</summary>
</member>
<member name="M:csscript.Settings.ExpandUseAlternativeCompiler">
<summary>
Returns value of the UseAlternativeCompiler (with expanding environment variables).
</summary>
<returns>Path string</returns>
</member>
<member name="P:csscript.Settings.UsePostProcessor">
<summary>
Location of PostProcessor assembly. If set it forces script engine to pass compiled script through PostProcessor before the execution.
</summary>
</member>
<member name="M:csscript.Settings.ExpandUsePostProcessor">
<summary>
Returns value of the UsePostProcessor (with expanding environment variables).
</summary>
<returns>Path string</returns>
</member>
<member name="P:csscript.Settings.DefaultApartmentState">
<summary>
DefaultApartmentState is an ApartmemntState, which will be used
at run-time if none specified in the code with COM threading model attributes.
</summary>
</member>
<member name="P:csscript.Settings.DefaultArguments">
<summary>
Default command-line arguments. For example if "/dbg" is specified all scripts will be compiled in debug mode
regardless if the user specified "/dbg" when a particular script is launched.
</summary>
</member>
<member name="P:csscript.Settings.InjectScriptAssemblyAttribute">
<summary>
Gets or sets a value indicating whether script assembly attribute should be injected. The AssemblyDecription attribute
contains the original location of the script file the assembly being compiled from./
</summary>
<value>
<c>true</c> if the attribute should be injected; otherwise, <c>false</c>.
</value>
</member>
<member name="P:csscript.Settings.EnableDbgPrint">
<summary>
Gets or sets a value indicating whether to enable Python-like print methods (e.g. dbg.print(DateTime.Now)).
</summary>
<value>
<c>true</c> if print methods are enabled; otherwise, <c>false</c>.
</value>
</member>
<member name="P:csscript.Settings.ResolveAutogenFilesRefs">
<summary>
Gets or sets a value indicating whether references to the auto-generated files should be resolved.
<para>
If this flag is set the all references in the compile errors text to the path of the derived auto-generated files
(e.g. errors in the decorated classless scripts) will be replaced with the path of the original file(s) (e.g. classless script itself).
</para>
</summary>
<value>
<c>true</c> if preferences needs to be resolved; otherwise, <c>false</c>.
</value>
</member>
<member name="P:csscript.Settings.OpenEndDirectiveSyntax">
<summary>
Enables omitting closing character (";") for CS-Script directives (e.g. "//css_ref System.Xml.dll" instead of "//css_ref System.Xml.dll;").
</summary>
</member>
<member name="P:csscript.Settings.ConsoleEncoding">
<summary>
Encoding of he Console Output. Applicable for console applications script engine only.
</summary>
</member>
<member name="P:csscript.Settings.LegacyTimestampCaching">
<summary>
Gets or sets a value indicating whether to enforce timestamping the compiled script assembly.
<para>
Some reports indicated that changing assembly timestamp can affect CLR caching (shadow copying)
due to some unknown/undocumented CLR feature(s).
</para>
<para>
Thus script caching algorithm has been changed to avoid using the compiled assembly
LastModifiedTime file-attribute for storing the script timestamp. Currently caching algorithm
uses injected metadata instead.
</para>
<para>
If for whatever reason the old behaver is preferred you can always enable it by either setting
<see cref="P:csscript.Settings.LegacyTimestampCaching"/> to <c>true</c> or by setting CSS_LEGACY_TIMESTAMP_CAHING
environment variable to <c>"true"</c>.
</para>
<para>
Triggered by issue #61: https://github.com/oleg-shilo/cs-script/issues/61
</para>
</summary>
<value>
<c>true</c> if to suppress timestamping; otherwise, <c>false</c>.
</value>
</member>
<member name="P:csscript.Settings.CustomTempDirectory">
<summary>
Gets or sets the custom CS-Script temporary directory.
</summary>
<value>
The custom temporary directory.
</value>
</member>
<member name="P:csscript.Settings.TargetFramework">
<summary>
Specifies the .NET Framework version that the script is compiled against. This option can have the following values:
v2.0
v3.0
v3.5
v4.0
</summary>
</member>
<member name="P:csscript.Settings.CompilerFramework">
<summary>
Specifies the .NET Framework version that the script is compiled against. This option can have the following values:
v2.0
v3.0
v3.5
v4.0
</summary>
</member>
<member name="P:csscript.Settings.DefaultRefAssemblies">
<summary>
List of assembly names to be automatically referenced by the script. The items must be separated by coma or semicolon. Specifying .dll extension (e.g. System.Core.dll) is optional.
Assembly can contain expandable environment variables.
</summary>
</member>
<member name="M:csscript.Settings.ExpandDefaultRefAssemblies">
<summary>
Returns value of the DefaultRefAssemblies (with expanding environment variables).
</summary>
<returns>List of assembly names</returns>
</member>
<member name="P:csscript.Settings.SearchDirs">
<summary>
List of directories to be used to search (probing) for referenced assemblies and script files.
This setting is similar to the system environment variable PATH.
</summary>
</member>
<member name="M:csscript.Settings.AddSearchDir(System.String)">
<summary>
Add search directory to the search (probing) path Settings.SearchDirs.
For example if Settings.SearchDirs = "c:\scripts" then after call Settings.AddSearchDir("c:\temp") Settings.SearchDirs is "c:\scripts;c:\temp"
</summary>
<param name="dir">Directory path.</param>
</member>
<member name="P:csscript.Settings.HideAutoGeneratedFiles">
<summary>
The value, which indicates if auto-generated files (if any) should be hidden in the temporary directory.
</summary>
</member>
<member name="P:csscript.Settings.Precompiler">
<summary>
Path to the precompiler script/assembly (see documentation for details). You can specify multiple recompiles separating them by semicolon.
</summary>
</member>
<member name="P:csscript.Settings.CustomHashing">
<summary>
Gets or sets a value indicating whether custom string hashing algorithm should be used.
<para>
String hashing is used by the script engine for allocating temporary and cached paths.
However default string hashing is platform dependent (x32 vs. x64) what makes impossible
truly deterministic string hashing. This in turns complicates the integration of the
CS-Script infrastructure with the third-party applications (e.g. Notepad++ CS-Script plugin).
</para>
<para>
To overcome this problem CS-Script uses custom string hashing algorithm (default setting).
Though the native .NET hashing can be enabled if desired by setting <c>CustomHashing</c>
to <c>false</c>.</para>
</summary>
<value>
<c>true</c> if custom hashing is in use; otherwise, <c>false</c>.
</value>
</member>
<member name="T:csscript.Settings.HideOptions">
<summary>
Enum for possible hide auto-generated files scenarios
Note: when HideAll is used it is responsibility of the pre/post script to implement actual hiding.
</summary>
</member>
<member name="F:csscript.Settings.HideOptions.DoNotHide">
<summary>
Do not hide auto-generated files.
</summary>
</member>
<member name="F:csscript.Settings.HideOptions.HideMostFiles">
<summary>
Hide the most of the auto-generated (cache and "imported") files.
</summary>
</member>
<member name="F:csscript.Settings.HideOptions.HideAll">
<summary>
Hide all auto-generated files including the files generated by pre/post scripts.
</summary>
</member>
<member name="P:csscript.Settings.ReportDetailedErrorInfo">
<summary>
Boolean flag that indicates how much error details to be reported should error occur.
false - Top level exception will be reported
true - Whole exception stack will be reported
</summary>
</member>
<member name="P:csscript.Settings.OptimisticConcurrencyModel">
<summary>
Gets or sets a value indicating whether Optimistic Concurrency model should be used when executing scripts from the host application.
If set to <c>false</c> the script loading (not the execution) is globally thread-safe. If set to <c>true</c> the script loading is
thread-safe only among loading operations for the same script file.
<para>The default value is <c>true</c>.</para>
</summary>
<value>
<c>true</c> if Optimistic Concurrency model otherwise, <c>false</c>.
</value>
</member>
<member name="P:csscript.Settings.AutoClass_DecorateAsCS6">
<summary>
Gets or sets a value indicating whether auto-class decoration should allow C# 6 specific syntax.
If it does the statement "using static dbg;" will be injected at the start of the auto-class definition thus the
entry script may invoke static methods for object inspection with <c>dbg</c> class without specifying the
class name (e.g. "print(DateTime.Now);").
</summary>
<value>
<c>true</c> if decorate auto-class as C# 6; otherwise, <c>false</c>.
</value>
</member>
<member name="P:csscript.Settings.HideCompilerWarnings">
<summary>
Boolean flag that indicates if compiler warnings should be included in script compilation output.
false - warnings will be displayed
true - warnings will not be displayed
</summary>
</member>
<member name="P:csscript.Settings.InMemoryAssembly">
<summary>
Boolean flag that indicates the script assembly is to be loaded by CLR as an in-memory byte stream instead of the file.
This setting can be useful when you need to prevent script assembly (compiled script) from locking by CLR during the execution.
false - script assembly will be loaded as a file. It is an equivalent of Assembly.LoadFrom(string assemblyFile).
true - script assembly will be loaded as a file. It is an equivalent of Assembly.Load(byte[] rawAssembly)
<para>Note: some undesired side effects can be triggered by having assemblies with <c>Assembly.Location</c> being empty.
For example <c>Interface Alignment</c> any not work with such assemblies as it relies on CLR compiling services that
typically require assembly <c>Location</c> member being populated with the valid path.</para>
</summary>
</member>
<member name="P:csscript.Settings.ConcurrencyControl">
<summary>
Gets or sets the concurrency control model.
</summary>
<value>The concurrency control.</value>
</member>
<member name="M:csscript.Settings.ToString">
<summary>
Serializes instance of Settings.
</summary>
<returns></returns>
</member>
<member name="M:csscript.Settings.Save(System.String)">
<summary>
Saves CS-Script application settings to a file.
</summary>
<param name="fileName">File name of the settings file</param>
</member>
<member name="M:csscript.Settings.Load(System.String)">
<summary>
Loads CS-Script application settings from a file. Default settings object is returned if it cannot be loaded from the file.
</summary>
<param name="fileName">File name of the XML file</param>
<returns>Setting object deserialized from the XML file</returns>
</member>
<member name="P:csscript.Settings.DefaultConfigFile">
<summary>
Gets the default configuration file path. It is a "css_config.xml" file located in the same directory where the assembly
being executed is (e.g. cscs.exe).
<para>Note, when running under Mono the "css_config.mono.xml" file will have higher precedence than "css_config.xml".
This way you can have Mono specific settings without affecting the settings for non-Mono runtimes.</para>
</summary>
<value>
The default configuration file location. Returns null if the file is not found.
</value>
</member>
<member name="M:csscript.Settings.Load(System.Boolean)">
<summary>
Loads CS-Script application settings from the default config file (css_config.xml in the cscs.exe/csws.exe folder).
</summary>
<param name="createAlways">Create and return default settings object if it cannot be loaded from the file.</param>
<returns>Setting object deserialized from the XML file</returns>
</member>
<member name="M:csscript.Settings.Load(System.String,System.Boolean)">
<summary>
Loads CS-Script application settings from a file.
</summary>
<param name="fileName">File name of the XML file</param>
<param name="createAlways">Create and return default settings object if it cannot be loaded from the file.</param>
<returns>Setting object deserialized from the XML file</returns>
</member>
<member name="T:csscript.CompilingInfo">
<summary>
Class containing all information about script compilation context and the compilation result.
</summary>
</member>
<member name="F:csscript.CompilingInfo.ScriptFile">
<summary>
The script file that the <c>CompilingInfo</c> is associated with.
</summary>
</member>
<member name="F:csscript.CompilingInfo.ParsingContext">
<summary>
The script parsing context containing the all CS-Script specific compilation/parsing info (e.g. probing directories,
NuGet packages, compiled sources).
</summary>
</member>
<member name="F:csscript.CompilingInfo.Result">
<summary>
The script compilation result.
</summary>
</member>
<member name="F:csscript.CompilingInfo.Input">
<summary>
The compilation context object that contain all information about the script compilation input
(referenced assemblies, compiler symbols).
</summary>
</member>
<member name="M:csscript.Utils.WaitForFileIdle(System.String,System.Int32)">
<summary>
Waits for file idle.
</summary>
<param name="file">The file.</param>
<param name="delay">The delay.</param>
<returns><c>true</c> if the wait is successful.</returns>
</member>
<member name="M:csscript.Utils.AddCompilerOptions(System.CodeDom.Compiler.CompilerParameters,System.String)">
<summary>
Adds compiler options to the CompilerParameters in a manner that it does separate every option by the space character
</summary>
</member>
<member name="M:csscript.CSSUtils.CompileResource(System.String,System.String)">
<summary>
Compiles ResX file into .resources
</summary>
</member>
<member name="M:csscript.CSSUtils.ParseAppArgs(System.String[],csscript.IScriptExecutor)">
<summary>
Parses application (script engine) arguments.
</summary>
<param name="args">Arguments</param>
<param name="executor">Script executor instance</param>
<returns>Index of the first script argument.</returns>
</member>
<member name="T:csscript.MetaDataItems">
<summary>
The MetaDataItems class contains information about script dependencies (referenced local
assemblies and imported scripts) and compiler options. This information is required when
scripts are executed in a 'cached' mode (/c switch). On the base of this information the script
engine will compile new version of .compiled assembly if any of it's dependencies is changed. This
is required even for referenced local assemblies as it is possible that they are a strongly
named assemblies (recompiling is required for any compiled client of the strongly named assembly
in case this assembly is changed).
The perfect place to store the dependencies info (custom meta data) is the assembly
resources. However if we do so such assemblies would have to be loaded in order to read their
resources. It is not acceptable as after loading assembly cannot be unloaded. Also assembly loading
can significantly compromise performance.
That is why custom meta data is just physically appended to the file. This is a valid
approach because such assembly is not to be distributed anywhere but to stay always
on the PC and play the role of the temporary data for the script engine.
Note: A .dll assembly is always compiled and linked in a normal way without any custom meta data attached.
</summary>
</member>
<member name="T:csscript.DotNetVersion">
<summary>
Helper for retrieving currently installed .NET version
</summary>
</member>
<member name="M:csscript.DotNetVersion.Get45PlusFromRegistry">
<summary>
Returns the exact full version of the installed .NET 4.5
</summary>
<returns></returns>
</member>
<member name="T:csscript.CSSEnvironment">
<summary>
This class implements access to the CS-Script global configuration settings.
</summary>
</member>
<member name="M:csscript.CSSEnvironment.GetCacheDirectory(System.String)">
<summary>
Generates the name of the cache directory for the specified script file.
</summary>
<param name="file">Script file name.</param>
<returns>Cache directory name.</returns>
</member>
<member name="M:csscript.CSSEnvironment.SaveAsTempScript(System.String)">
<summary>
Saves code to the script file in the dedicated CS-Script <c>temporary files</c> location. You do not have to delete the script file after the execution.
It will be deleted as part of the periodical automatic CS-Script maintenance.
</summary>
<param name="content">The script file content.</param>
<returns>Name of the created temporary script file.</returns>
</member>
<member name="M:csscript.CSSEnvironment.GetTempScriptName">
<summary>
Generates the script file path in the dedicated CS-Script <c>temporary files</c> location. You do not have to delete such file after the execution.
It will be deleted as part of the periodical automatic CS-Script maintenance.
</summary>
<returns>Name of the temporary script file.</returns>
</member>
<member name="M:csscript.CSSEnvironment.SetScriptTempDir(System.String)">
<summary>
Sets the location for the CS-Script temporary files directory.
</summary>
<param name="path">The path for the temporary directory.</param>
</member>
<member name="M:csscript.CSSEnvironment.GetScriptTempDir">
<summary>
Gets the location of the CS-Script temporary files directory.
</summary>
<returns></returns>
</member>
<member name="P:csscript.CSSEnvironment.ScriptFile">
<summary>
The full name of the script file being executed.
</summary>
</member>
<member name="P:csscript.CSSEnvironment.PrimaryScriptFile">
<summary>
The full name of the primary script file being executed. Usually it is the same file as ScriptFile.
However these fields are different if analyzed from the pre/post-script.
</summary>
</member>
<member name="T:csscript.AppInfo">
<summary>
Repository for application specific data
</summary>
</member>
<member name="T:csscript.MarshalByRefObjectWithInfiniteLifetime">
<summary>
Enables access to objects across application domain boundaries in applications that support
Remoting, giving them infinite lease time by setting <see cref="P:System.Runtime.Remoting.Lifetime.ILease.InitialLeaseTime"/>
to <see cref="F:System.TimeSpan.Zero"/>.
</summary>
<example>
<code>
var code = @"using System;
public class Script : MarshalByRefObjectWithInfiniteLifetime
{
public void Hello(string greeting)
{
Console.WriteLine(greeting);
}
}";
using (var helper = new AsmHelper(CSScript.CompileCode(code), null, deleteOnExit: true))
{
IScript script = helper.CreateAndAlignToInterface&lt;IScript&gt;("*");
script.Hello("Hi there...");
}
</code>
</example>
<remarks>
The script engine mechanism is not a real inter-process communication. It does use remoting,
but within a single process. So it is acceptable to switch off the timeout mechanism. When
the hosting application is terminated, all objects will be finalized anyway.
Without the modification, if there is no interaction between script and host for more than
5 minutes (the default lease time for .NET Remoting), a <see cref="T:System.Runtime.RemotingException"/>
may be thrown, stating:
<![CDATA[Object '/<guid>/<id>.rem' has been disconnected or does not exist at the server.]]>
</remarks>
</member>
<member name="M:csscript.MarshalByRefObjectWithInfiniteLifetime.InitializeLifetimeService">
<summary>
Obtains a lifetime service object to control the lifetime policy for this instance.
</summary>
</member>
<member name="T:CSScriptLibrary.AssemblyResolver">
<summary>
Class for resolving assembly name to assembly file
</summary>
</member>
<member name="F:CSScriptLibrary.AssemblyResolver.ignoreFileName">
<summary>
File to be excluded from assembly search
</summary>
</member>
<member name="P:CSScriptLibrary.AssemblyResolver.CacheProbingResults">
<summary>
Gets or sets a value indicating whether the assembly probing results should be cached. Default value is <c>false</c>;
<para>
Caching means that during the probing if the assembly is not found in one of the probing directories this directory will not
be checked again if the same assembly is to be resolved in the future.
</para>
<para>
This setting is to be used with the caution. While it can bring some performance benefits when the list of probing directories
is large it also may be wrong to assume that if the assembly in not found in a particular directory it still will not be there if the probing is repeated.
</para>
</summary>
<value><c>true</c> if probing results should be cached; otherwise, <c>false</c>.</value>
</member>
<member name="M:CSScriptLibrary.AssemblyResolver.ResolveAssembly(System.String,System.String,System.Boolean)">
<summary>
Resolves assembly name to assembly file. Loads assembly file to the current AppDomain.
</summary>
<param name="assemblyName">The name of assembly</param>
<param name="dir">The name of directory where local assemblies are expected to be</param>
<param name="throwExceptions">if set to <c>true</c> [throw exceptions].</param>
<returns>loaded assembly</returns>
</member>
<member name="M:CSScriptLibrary.AssemblyResolver.IsLegalPathToken(System.String)">
<summary>
Determines whether the string is a legal path token.
</summary>
<param name="name">The name.</param>
<returns>
<c>true</c> if the string is a legal path token; otherwise, <c>false</c>.
</returns>
</member>
<member name="M:CSScriptLibrary.AssemblyResolver.FindAssembly(System.String,System.String[])">
<summary>
Resolves namespace/assembly(file) name into array of assembly locations (local and GAC ones).
</summary>
<param name="name">'namespace'/assembly(file) name</param>
<param name="searchDirs">Assembly search directories</param>
<para>If the default implementation isn't suitable then you can set <c>CSScript.FindAssemblyAlgorithm</c>
to the alternative implementation of the probing algorithm.</para>
<returns>collection of assembly file names where namespace is implemented</returns>
</member>
<member name="M:CSScriptLibrary.AssemblyResolver.FindLocalAssembly(System.String,System.String)">
<summary>
Resolves namespace into array of local assembly locations.
(Currently it returns only one assembly location but in future
it can be extended to collect all assemblies with the same namespace)
</summary>
<param name="name">namespace/assembly name</param>
<param name="dir">directory</param>
<returns>collection of assembly file names where namespace is implemented</returns>
</member>
<member name="M:CSScriptLibrary.AssemblyResolver.FindGlobalAssembly(System.String)">
<summary>
Resolves namespace into array of global assembly (GAC) locations.
</summary>
<param name="namespaceStr">'namespace' name</param>
<returns>collection of assembly file names where namespace is implemented</returns>
</member>
<member name="M:CSScriptLibrary.AssemblyResolver.IsNamespaceDefinedInAssembly(System.String,System.String)">
<summary>
Search for namespace into local assembly file.
</summary>
</member>
<member name="T:CSScriptLibrary.ParsingParams">
<summary>
ParsingParams is an class that holds parsing parameters (parameters that controls how file is to be parsed).
At this moment they are namespace renaming rules only.
</summary>
</member>
<member name="M:CSScriptLibrary.ParsingParams.Compare(CSScriptLibrary.ParsingParams,CSScriptLibrary.ParsingParams)">
<summary>
Compare() is to be used to help with implementation of IComparer for sorting operations.
</summary>
</member>
<member name="T:CSScriptLibrary.ScriptInfo">
<summary>
Class which is a placeholder for general information of the script file
</summary>
</member>
<member name="M:CSScriptLibrary.ScriptInfo.#ctor(csscript.CSharpParser.ImportInfo)">
<summary>
Constructor
</summary>
<param name="info">ImportInfo object containing the information how the script file should be parsed.</param>
</member>
<member name="T:CSScriptLibrary.FileParser">
<summary>
Class that implements parsing the single C# script file
</summary>
</member>
<member name="M:CSScriptLibrary.FileParser.ResolveFile(System.String,System.String[])">
<summary>
Searches for script file by given script name. Calls ResolveFile(string fileName, string[] extraDirs, bool throwOnError)
with throwOnError flag set to true.
</summary>
</member>
<member name="F:CSScriptLibrary.FileParser.ResolveFilesAlgorithm">
<summary>
The resolve file algorithm,
<para>
The default algorithm searches for script file by given script name. Search order:
1. Current directory
2. extraDirs (usually %CSSCRIPT_DIR%\Lib and ExtraLibDirectory)
3. PATH
Also fixes file name if user did not provide extension for script file (assuming .cs extension)
</para>
</summary>
</member>
<member name="M:CSScriptLibrary.FileParser.ResolveFile(System.String,System.String[],System.Boolean)">
<summary>
Searches for script file by given script name. Search order:
1. Current directory
2. extraDirs (usually %CSSCRIPT_DIR%\Lib and ExtraLibDirectory)
3. PATH
Also fixes file name if user did not provide extension for script file (assuming .cs extension)
<para>If the default implementation isn't suitable then you can set <c>FileParser.ResolveFilesAlgorithm</c>
to the alternative implementation of the probing algorithm.</para>
</summary>
</member>
<member name="T:CSScriptLibrary.FileParserComparer">
<summary>
Class that implements parsing the single C# Script file
</summary>
<summary>
Implementation of the IComparer for sorting operations of collections of FileParser instances
</summary>
</member>
<member name="T:CSScriptLibrary.ScriptParsingResult">
<summary>
Information about the script parsing result.
</summary>
</member>
<member name="F:CSScriptLibrary.ScriptParsingResult.Packages">
<summary>
The packages referenced from the script with `//css_nuget` directive
</summary>
</member>
<member name="F:CSScriptLibrary.ScriptParsingResult.ReferencedResources">
<summary>
The referenced resources referenced from the script with `//css_res` directive
</summary>
</member>
<member name="F:CSScriptLibrary.ScriptParsingResult.ReferencedAssemblies">
<summary>
The referenced assemblies referenced from the script with `//css_ref` directive
</summary>
</member>
<member name="F:CSScriptLibrary.ScriptParsingResult.ReferencedNamespaces">
<summary>
The namespaces imported with C# `using` directive
</summary>
</member>
<member name="F:CSScriptLibrary.ScriptParsingResult.IgnoreNamespaces">
<summary>
The namespaces that are marked as "to ignore" with `//css_ignore_namespace` directive
</summary>
</member>
<member name="F:CSScriptLibrary.ScriptParsingResult.CompilerOptions">
<summary>
The compiler options specified with `//css_co` directive
</summary>
</member>
<member name="F:CSScriptLibrary.ScriptParsingResult.SearchDirs">
<summary>
The directories specified with `//css_dir` directive
</summary>
</member>
<member name="F:CSScriptLibrary.ScriptParsingResult.Precompilers">
<summary>
The precompilers specified with `//css_pc` directive
</summary>
</member>
<member name="F:CSScriptLibrary.ScriptParsingResult.FilesToCompile">
<summary>
All files that need to be compiled as part of the script execution.
</summary>
</member>
<member name="F:CSScriptLibrary.ScriptParsingResult.Timestamp">
<summary>
The time of parsing.
</summary>
</member>
<member name="T:CSScriptLibrary.ScriptParser">
<summary>
Class that manages parsing the main and all imported (if any) C# Script files
</summary>
</member>
<member name="M:CSScriptLibrary.ScriptParser.GetContext">
<summary>
Gets the script parsing context. This object is effectively a parsing result.
</summary>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.ScriptParser.ProcessImportedScript(System.String)">
<summary>
Processes the imported script. Processing involves lookup for 'static Main' and renaming it so it does not
interfere with the 'static Main' of the primary script. After renaming is done the new content is saved in the
CS-Script cache and the new file location is returned. The saved file can be used late as an "included script".
This technique can be from 'precompiler' scripts.
<para>If the script file does not require renaming (static Main is not present) the method returns the
original script file location.</para>
</summary>
<param name="scriptFile">The script file.</param>
<returns></returns>
</member>
<member name="F:CSScriptLibrary.ScriptParser.apartmentState">
<summary>
ApartmentState of a script during the execution (default: ApartmentState.Unknown)
</summary>
</member>
<member name="P:CSScriptLibrary.ScriptParser.FilesToCompile">
<summary>
Collection of the files to be compiled (including dependent scripts)
</summary>
</member>
<member name="P:CSScriptLibrary.ScriptParser.ImportedFiles">
<summary>
Collection of the imported files (dependent scripts)
</summary>
</member>
<member name="P:CSScriptLibrary.ScriptParser.ReferencedResources">
<summary>
Collection of resource files referenced from code
</summary>
</member>
<member name="P:CSScriptLibrary.ScriptParser.CompilerOptions">
<summary>
Collection of compiler options
</summary>
</member>
<member name="P:CSScriptLibrary.ScriptParser.Precompilers">
<summary>
Precompilers specified in the primary script file.
</summary>
</member>
<member name="P:CSScriptLibrary.ScriptParser.ReferencedNamespaces">
<summary>
Collection of namespaces referenced from code (including those referenced in dependant scripts)
</summary>
</member>
<member name="P:CSScriptLibrary.ScriptParser.IgnoreNamespaces">
<summary>
Collection of namespaces, which if found in code, should not be resolved into referenced assembly.
</summary>
</member>
<member name="M:CSScriptLibrary.ScriptParser.ResolvePackages(System.Boolean)">
<summary>
Resolves the NuGet packages into assemblies to be referenced by the script.
<para>If the package was never installed/downloaded yet CS-Script runtime will try to download it.</para>
<para>CS-Script will also analyze the installed package structure in try to reference compatible assemblies
from the package.</para>
</summary>
<param name="suppressDownloading">if set to <c>true</c> suppresses downloading the NuGet package.
Suppressing can be useful for the quick 'referencing' assessment.</param>
<returns>Collection of the referenced assembly files.</returns>
</member>
<member name="P:CSScriptLibrary.ScriptParser.Packages">
<summary>
Collection of the NuGet packages
</summary>
</member>
<member name="P:CSScriptLibrary.ScriptParser.ReferencedAssemblies">
<summary>
Collection of referenced assemblies. All assemblies are referenced either from command-line, code or resolved from referenced namespaces.
</summary>
</member>
<member name="M:CSScriptLibrary.ScriptParser.#ctor(System.String)">
<summary>
Constructor.
</summary>
<param name="fileName">Script file name</param>
</member>
<member name="M:CSScriptLibrary.ScriptParser.#ctor(System.String,System.String[])">
<summary>
Constructor.
</summary>
<param name="fileName">Script file name</param>
<param name="searchDirs">Extra ScriptLibrary directory </param>
</member>
<member name="M:CSScriptLibrary.ScriptParser.#ctor(System.String,System.String[],System.Boolean)">
<summary>
Constructor.
</summary>
<param name="fileName">Script file name</param>
<param name="searchDirs">Extra ScriptLibrary directory(s) </param>
<param name="throwOnError">flag to indicate if the file parsing/processing error should raise an exception</param>
</member>
<member name="P:CSScriptLibrary.ScriptParser.ScriptPath">
<summary>
The path of the parsed script.
</summary>
</member>
<member name="M:CSScriptLibrary.ScriptParser.Init(System.String,System.String[])">
<summary>
Initialization of ScriptParser instance
</summary>
<param name="fileName">Script file name</param>
<param name="searchDirs">Extra ScriptLibrary directory(s) </param>
</member>
<member name="M:CSScriptLibrary.ScriptParser.SaveImportedScripts">
<summary>
Saves all imported scripts int temporary location.
</summary>
<returns>Collection of the saved imported scrips file names</returns>
</member>
<member name="M:CSScriptLibrary.ScriptParser.DeleteImportedFiles">
<summary>
Deletes imported scripts as a cleanup operation
</summary>
</member>
<member name="F:CSScriptLibrary.ScriptParser.SearchDirs">
<summary>
CS-Script SearchDirectories specified in the parsed script or its dependent scripts.
</summary>
</member>
<member name="M:CSScriptLibrary.ScriptParser.AgregateReferences(System.Collections.Generic.IEnumerable{System.String},System.Collections.Generic.IEnumerable{System.String},System.Collections.Generic.IEnumerable{System.String})">
<summary>
Aggregates the references from the script and its imported scripts. It is a logical equivalent of CSExecutor.AggregateReferencedAssemblies
but optimized for later .NET versions (e.g LINQ) and completely decoupled. Thus it has no dependencies on internal state
(e.g. settings, options.shareHostAssemblies).
<para>It is the method to call for generating list of ref asms as part of the project info.</para>
</summary>
<param name="searchDirs">The search dirs.</param>
<param name="defaultRefAsms">The default ref asms.</param>
<param name="defaultNamespacess">The default namespaces.</param>
<returns></returns>
</member>
<member name="T:CSScriptLibrary.FastInvokeDelegate">
<summary>
Delegate which is used as a return type for AsmHelper.GetMethodInvoker().
AsmHelper.GetMethodInvoker() allows obtaining dynamic method delegate emitted on the base of the MethodInfo (from the compiled script type).
</summary>
<param name="instance">Instance of the type which method is to be invoked.</param>
<param name="paramters">Optional method parameters.</param>
<returns>Returns MethodInfo return value</returns>
</member>
<member name="T:CSScriptLibrary.MethodDelegate">
<summary>
Delegate which is used as a return type for AsmHelper.GetMethodInvoker().
AsmHelper.GetStaticMethod() and AsmHelper.GetMethod() allow obtaining dynamic method delegate emitted on the base of the MethodInfo (from the compiled script type).
</summary>
<param name="paramters">Optional method parameters.</param>
<returns>Returns MethodInfo return value</returns>
</member>
<member name="T:CSScriptLibrary.MethodDelegate`1">
<summary>
Delegate which is used as a return type for AsmHelper.GetMethodInvoker().
AsmHelper.GetStaticMethod() and AsmHelper.GetMethod() allow obtaining dynamic method delegate emitted on the base of the MethodInfo (from the compiled script type).
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<param name="paramters">Optional method parameters.</param>
<returns>Returns MethodInfo return value</returns>
</member>
<member name="T:CSScriptLibrary.AsmHelper">
<summary>
Helper class to simplify working with dynamically loaded assemblies.
</summary>
</member>
<member name="M:CSScriptLibrary.AsmHelper.AlignToInterface``1(System.Object)">
<summary>
Aligns (pseudo typecasts) object to the specified interface.
<para>The object does not necessarily need to implement the interface formally.</para>
<para>See <see cref="T:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1"/>.</para>
<remarks>
The important difference between this method being called from <see cref="T:CSScriptLibrary.AsmHelper"/> working
with the assembly in current and remote <see cref="T:System.AppDomain"/> is that is that the actual
interface alignment is performed in the corresponding <see cref="T:System.AppDomain"/>.
</remarks>
</summary>
<typeparam name="T">Interface definition to align with.</typeparam>
<param name="obj">The object to be aligned with the interface.</param>
<returns>Interface object.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.AlignToInterface``1(System.Object,System.String[])">
<summary>
Aligns (pseudo typecasts) object to the specified interface.
<para>The object does not necessarily need to implement the interface formally.</para>
<para>See <see cref="T:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1"/>.</para>
<remarks>
The important difference between this method being called from <see cref="T:CSScriptLibrary.AsmHelper"/> working
with the assembly in current and remote <see cref="T:System.AppDomain"/> is that is that the actual
interface alignment is performed in the corresponding <see cref="T:System.AppDomain"/>.
</remarks>
</summary>
<typeparam name="T">Interface definition to align with.</typeparam>
<param name="obj">The object to be aligned with the interface.</param>
<param name="refAssemblies">The string array containing file names to the additional dependency
assemblies the interface depends in. </param>
<returns>Interface object.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.AlignToInterface``1(System.Object,System.Boolean)">
<summary>
Aligns (pseudo typecasts) object to the specified interface.
<para>The object does not necessarily need to implement the interface formally.</para>
<para>See <see cref="T:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1"/>.</para>
<remarks>
The important difference between this method being called from <see cref="T:CSScriptLibrary.AsmHelper"/> working
with the assembly in current and remote <see cref="T:System.AppDomain"/> is that is that the actual
interface alignment is performed in the corresponding <see cref="T:System.AppDomain"/>.
</remarks>
</summary>
<typeparam name="T">Interface definition to align with.</typeparam>
<param name="obj">The object to be aligned with the interface.</param>
<param name="useAppDomainAssemblies">If set to <c>true</c> uses all loaded assemblies of the current <see cref="T:System.AppDomain"/></param>
<returns>Interface object.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.CreateAndAlignToInterface``1(System.String,System.Object[])">
<summary>
Creates object in remote or current <see cref="T:System.AppDomain"/> and aligns (pseudo typecasts) it to the specified interface.
<para>Semantically it is an equivalent of calling
<code>asmHelper.AlignToInterface(asmHelper.CreateObject(typeName))</code>
</para>
</summary>
<typeparam name="T">Interface definition to align with.</typeparam>
<param name="typeName">The 'Type' full name of the type to create. (see Assembly.CreateInstance()).
You can use wild card meaning the first type found. However only full wild card "*" is supported.</param>
<param name="args">The non default constructor arguments.</param>
<returns>Interface object.</returns>
</member>
<member name="P:CSScriptLibrary.AsmHelper.ScriptExecutionDomain">
<summary>
Instance of the AppDomain, which is used to execute the script.
</summary>
</member>
<member name="P:CSScriptLibrary.AsmHelper.RemoteObject">
<summary>
Reference to the <see cref="T:CSScriptLibrary.AsmHelper"/> "worker" object created in the remote AppDomain. This property is null
unless <see cref="T:CSScriptLibrary.AsmHelper"/> was instantiated for the <c>remote execution</c> scenario.
<para>This property can be useful when you need to access the remote object in order to manage the "life time" of the AsmHelper in
Remoting and WCF scenarios.</para>
</summary>
<example>
<code>
var scriptHelper = new AsmHelper(scriptAsmFile, null, true);
scriptHelper.RemoteObject.ExtendLifeFromMinutes(30);
</code>
</example>
</member>
<member name="P:CSScriptLibrary.AsmHelper.CachingEnabled">
<summary>
Flag that indicates if method caching is enabled. It is set to true by default.
<para></para>
When caching is enabled AsmHelper generates (emits) extremely fast delegates for
the methods being invoked. If AsmHelper is in cache mode it performs more than twice faster.
However generation of the delegate does take some time that is why you may consider
switching caching off if the method is to be invoked only once.
</summary>
</member>
<member name="P:CSScriptLibrary.AsmHelper.UnpackTargetInvocationExceptions">
<summary>
Gets or sets a value indicating whether to unpack <c>TargetInvocationException</c>s.
<para>Script are often invoked via Reflection with <see cref="T:CSScriptLibrary.AsmHelper"/>, what leads to the script internal runrtime exceptions to
be wrapped into noninformative <see cref="T:System.Reflection.TargetInvocationException"/>. Thus <see cref="T:CSScriptLibrary.AsmHelper"/> by default unwraps the internal exception
and rethrows it withour an additional <see cref="T:System.Reflection.TargetInvocationException"/> container.
</para>
<para>While this is a more convenient approach, sometimes it may be required to investigate the Reflection callstack. Then you will need
to suppress <see cref="T:System.Reflection.TargetInvocationException"/> unpacking with this very property.</para>
</summary>
<value>
<c>true</c> if unpack <see cref="T:System.Reflection.TargetInvocationException"/>; otherwise, <c>false</c>.
</value>
</member>
<member name="M:CSScriptLibrary.AsmHelper.GetMethodInvoker(System.String,System.Object[])">
<summary>
This method returns extremely fast delegate for the method specified by "methodName" and
method arguments "list". Invoking such delegate is ~100 times faster than invoking with pure reflection
(MethodInfo.Invoke()).
</summary>
<param name="methodName">'Method' name including 'Type' name (eg. MyType.DoJob). It is allowd to use wild
card character to indicate that the Type name of the method is irrelevant (e.g. "*.Method" or "*.*").</param>
<param name="list">List of 'Method' arguments.
Note that values of the items in the list do not have any importance. The type of the list item is
to be used for method search. For example if class Calc has method Sum(int a, int b) the method invoker
can be obtained as following:
<para></para>
GetMethodInvoker("Calc.Sum", 0, 0)
<para></para>
You can pass any integer as the second and third parameter because it will be used only to obtain the
information about the parameter type (in this case System.Int32).</param>
<returns>Returns delegate of CSScriptLibrary.FastInvokeDelegate type.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.GetStaticMethod(System.String,System.Object[])">
<summary>
Specialized version of GetMethodInvoker which returns MethodDelegate thus you do not need to specify
object instance (null) when calling static methods.
</summary>
<param name="methodName">'Method' name including 'Type' name (eg. MyType.DoJob). It is allowed to use wild
card character to indicate that the Type name of the method is irrelevant (e.g. "*.Method" or "*.*").</param>
<param name="list">List of 'Method' arguments. </param>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
<remarks>
<para>
<para>
Note that values of the items in the list do not have any importance. The type of the list item is
to be used for method search. For example if class Calc has method Sum(int a, int b) the method invoker
can be obtained as following:
</para>
</para>
<example>
<code>GetStaticMethod("Calc.Sum", 0, 0)</code>
</example>
<para>
You can pass any integer as the second and third parameter because it will be used only to obtain the
information about the parameter type (in this case System.Int32).
</para>
</remarks>
</member>
<member name="M:CSScriptLibrary.AsmHelper.GetStaticMethod``1(System.String,System.Object[])">
<summary>
Specialized version of GetMethodInvoker which returns MethodDelegate thus you do not need to specify
object instance (null) when calling static methods.
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<param name="methodName">'Method' name including 'Type' name (eg. MyType.DoJob). It is allowed to use wild
card character to indicate that the Type name of the method is irrelevant (e.g. "*.Method" or "*.*").</param>
<param name="list">List of 'Method' arguments. </param>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
<remarks>
<para>
<para>
Note that values of the items in the list do not have any importance. The type of the list item is
to be used for method search. For example if class Calc has method Sum(int a, int b) the method invoker
can be obtained as following:
</para>
</para>
<example>
<code>GetStaticMethod("Calc.Sum", 0, 0)</code>
</example>
<para>
You can pass any integer as the second and third parameter because it will be used only to obtain the
information about the parameter type (in this case System.Int32).
</para>
</remarks>
</member>
<member name="M:CSScriptLibrary.AsmHelper.GetStaticMethodWithArgs(System.String,System.Type[])">
<summary>
Specialized version of GetMethodInvoker which returns MethodDelegate thus you do not need to specify
object instance (null) when calling static methods.
</summary>
<param name="methodName">'Method' name including 'Type' name (eg. MyType.DoJob). It is allowed to use wild
card character to indicate that the Type name of the method is irrelevant (e.g. "*.Method" or "*.*").</param>
<param name="list">List of 'Method' arguments. </param>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.GetStaticMethodWithArgs``1(System.String,System.Type[])">
<summary>
Specialized version of GetMethodInvoker which returns MethodDelegate thus you do not need to specify
object instance (null) when calling static methods.
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<param name="methodName">'Method' name including 'Type' name (eg. MyType.DoJob). It is allowed to use wild
card character to indicate that the Type name of the method is irrelevant (e.g. "*.Method" or "*.*").</param>
<param name="list">List of 'Method' arguments. </param>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.GetStaticMethod">
<summary>
Specialized version of GetMethodInvoker which returns MethodDelegate of the very first method found in the
underlying assembly. This method is an overloaded implementation of the GetStaticMethod(string methodName, params object[] list).
<para>
Use this method when script assembly contains only one single type with one method.
</para>
</summary>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.GetStaticMethod``1">
<summary>
Specialized version of GetMethodInvoker which returns MethodDelegate of the very first method found in the
underlying assembly. This method is an overloaded implementation of the GetStaticMethod(string methodName, params object[] list).
<para>
Use this method when script assembly contains only one single type with one method.
</para>
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.GetMethod(System.Object,System.String,System.Object[])">
<summary>
Specialized version of GetMethodInvoker which returns MethodDelegate thus you do not need to specify
object instance when calling instance methods as delegate will maintain the instance object internally.
</summary>
<param name="instance">Instance of the type, which implements method is to be wrapped by MethodDelegate.</param>
<param name="methodName">'Method' name including 'Type' name (eg. MyType.DoJob). It is allowed to use wild
card character to indicate that the Type name of the method is irrelevant (e.g. "*.Method" or "*.*").</param>
<param name="list">List of 'Method' arguments.
<para>
Note that values of the items in the list do not have any importance. The type of the list item is
to be used for method search. For example if class Calc has method Sum(int a, int b) the method invoker
can be obtained as following:
<code>
GetMethod(instance, "Sum", 0, 0)
</code>
You can pass any integer as the second and third parameter because it will be used only to obtain the
information about the parameter type (in this case System.Int32).
</para>
</param>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.GetMethod``1(System.Object,System.String,System.Object[])">
<summary>
Specialized version of GetMethodInvoker which returns MethodDelegate thus you do not need to specify
object instance when calling instance methods as delegate will maintain the instance object internally.
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<param name="instance">Instance of the type, which implements method is to be wrapped by MethodDelegate.</param>
<param name="methodName">'Method' name including 'Type' name (eg. MyType.DoJob). It is allowed to use wild
card character to indicate that the Type name of the method is irrelevant (e.g. "*.Method" or "*.*").</param>
<param name="list">List of 'Method' arguments.
<para>
Note that values of the items in the list do not have any importance. The type of the list item is
to be used for method search. For example if class Calc has method Sum(int a, int b) the method invoker
can be obtained as following:
<code>
GetMethod(instance, "Sum", 0, 0)
</code>
You can pass any integer as the second and third parameter because it will be used only to obtain the
information about the parameter type (in this case System.Int32).
</para>
</param>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.#ctor(System.Reflection.Assembly)">
<summary>
Creates an instance of AsmHelper for working with assembly dynamically loaded to current AppDomain.
Calling "Dispose" is optional for "current AppDomain"scenario as no new AppDomain will be ever created.
</summary>
<param name="asm">Assembly object.</param>
</member>
<member name="M:CSScriptLibrary.AsmHelper.#ctor(System.String,System.String,System.Boolean)">
<summary>
Creates an instance of AsmHelper for working with assembly dynamically loaded to non-current AppDomain.
This method initializes instance and creates new ('remote') AppDomain with 'domainName' name. New AppDomain is automatically unloaded as result of "disposable" behaviour of AsmHelper.
</summary>
<param name="asmPath">The fully qualified path of the assembly file to load.</param>
<param name="domainName">Name of the domain to be created.</param>
<param name="deleteOnExit">'true' if assembly file should be deleted when new AppDomain is unloaded; otherwise, 'false'.</param>
</member>
<member name="M:CSScriptLibrary.AsmHelper.Invoke(System.String,System.Object[])">
<summary>
Executes static method of the underlying assembly.
</summary>
<param name="methodName">'Method' name including 'Type' name (e.g. MyType.DoJob). It is allowed to use wild card character
to indicate that the Type name of the method is irrelevant (e.g. "*.Method").</param>
<param name="list">List of 'Method' arguments.</param>
<returns>Returns object of the same type as 'Method' return type.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.InvokeInst(System.Object,System.String,System.Object[])">
<summary>
Executes an instance method of the underlying assembly.
</summary>
<param name="obj">Instance of the object whose method is to be invoked.</param>
<param name="methodName">'Method' name (excluding 'Type' name). It is allowed to use wild card character
to indicate that the Type name of the method is irrelevant (e.g. "*.Method" or even "*.*").</param>
<param name="list">List of 'Method' arguments.</param>
<returns>Returns object of the same type as 'Method' return type.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.GetMembersOf(System.Object)">
<summary>
Gets the information about the object members.
<p>This is an extremely light way of getting Reflection information of a given object. Object can be either local one
or a TransparentProxy of the object instantiated in a remote AppDomain.</p>
<remarks>Note: Because none of the MemberInfo derivatives is serializable. This makes it impossible to use Reflection
for discovering the type members instantiated in the different AppDomains. And the TransparentProxies do not provide any marshaled
Reflection API neither.
</remarks>
<example>
<code>
using (var helper = new AsmHelper(CSScript.CompileCode(code), null, true))
{
var script = helper.CreateObject("Script"); //script code has 'class Script' declared
foreach (string info in helper.GetMembersOf(script))
Debug.WriteLine(info);
}
</code>
</example>
</summary>
<param name="obj">The object.</param>
<returns>Collection of strings with each item representing human readable information about the Type member.
<para>
<c>Type implementation:</c><code>
class Script
{
public void SayHello(string greeting)
{
...
</code>
</para>
<para>
<para><c>Type member information:</c> </para>
"MemberType:Method;Name:SayHello;DeclaringType:Script;Signature:Void SayHello(System.String)"
</para>
</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.TryCreateObject(System.String,System.Object[])">
<summary>
Attempts to create instance of a class from underlying assembly.
</summary>
<param name="typeName">The 'Type' full name of the type to create. (see Assembly.CreateInstance()).
You can use wild card meaning the first type found. However only full wild card "*" is supported.</param>
<param name="args">The non default constructor arguments.</param>
<returns>Instance of the 'Type'. Returns null if the instance cannot be created.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.CreateObject(System.String,System.Object[])">
<summary>
Creates instance of a class from underlying assembly.
</summary>
<param name="typeName">The 'Type' full name of the type to create. (see Assembly.CreateInstance()).
You can use wild card meaning the first type found. However only full wild card "*" is supported.</param>
<param name="args">The non default constructor arguments.</param>
<returns>Instance of the 'Type'. Throws an ApplicationException if the instance cannot be created.</returns>
</member>
<member name="M:CSScriptLibrary.AsmHelper.Unload">
<summary>
Unloads 'remote' AppDomain if it was created.
</summary>
</member>
<member name="M:CSScriptLibrary.AsmHelper.Dispose">
<summary>
Implementation of IDisposable.Dispose(). Disposes allocated external resources if any. Call this method to unload non-current AppDomain (if it was created).
</summary>
</member>
<member name="M:CSScriptLibrary.AsmHelper.Dispose(System.Boolean)">
<summary>
Actual implementation of IDisposable.Dispose()
</summary>
<param name="disposing">'false' if the method has been called by the runtime from inside the finalizer ; otherwise, 'true'.</param>
</member>
<member name="M:CSScriptLibrary.AsmHelper.Finalize">
<summary>
Finalizer
</summary>
</member>
<member name="P:CSScriptLibrary.AsmHelper.ProbingDirs">
<summary>
Array of directories to be used for assembly probing.
</summary>
</member>
<member name="T:CSScriptLibrary.IAsmBrowser">
<summary>
Defines method for calling assembly methods and instantiating assembly types.
</summary>
</member>
<member name="M:CSScriptLibrary.AsmBrowser.CreateInstance(System.String,System.Object[])">
<summary>
Creates instance of a Type from underlying assembly.
</summary>
<param name="typeName">Name of the type to be instantiated. Allows wild card character (e.g. *.MyClass can be used to instantiate MyNamespace.MyClass).</param>
<param name="args">The non default constructor arguments.</param>
<returns>Created instance of the type.</returns>
</member>
<member name="T:CSScriptLibrary.FastInvoker">
<summary>
Class which is capable of emitting the dynamic method delegate based on the MethodInfo. Such delegate is
extremely fast and it can demonstrate up to 100 times better performance comparing to the pure
Reflection method invokation (MethodInfo.Invoke()).
Based on http://www.codeproject.com/KB/cs/FastInvokerWrapper.aspx
</summary>
</member>
<member name="F:CSScriptLibrary.FastInvoker.info">
<summary>
MethodInfo instance which was used to generate dynamic method delegate.
</summary>
</member>
<member name="M:CSScriptLibrary.FastInvoker.#ctor(System.Reflection.MethodInfo)">
<summary>
Constructor
</summary>
<param name="info">MethodInfo instance which is to be used to generate dynamic method delegate.</param>
</member>
<member name="M:CSScriptLibrary.FastInvoker.Invoke(System.Object,System.Object[])">
<summary>
Invokes dynamic method delegate generated from the MethodInfo object.
</summary>
<param name="instance">Instance of the type which method is to be invoked.</param>
<param name="paramters">Optional method parameters.</param>
<returns>Invokes dynamic method delegate return value</returns>
</member>
<member name="M:CSScriptLibrary.FastInvoker.GetMethodInvoker">
<summary>
Returns dynamic method delegate generated from the MethodInfo object.
</summary>
<returns>FastInvokeDelegate instance.</returns>
</member>
<member name="T:CSScriptLibrary.CSScript">
<summary>
Class which is implements CS-Script class library interface.
</summary>
</member>
<member name="P:CSScriptLibrary.CSScript.CodeDomEvaluator">
<summary>
Global instance of <see cref="T:CSScriptLibrary.CodeDomEvaluator"/>. This object is to be used for
dynamic loading of the C# code by using CodeDom "compiler as service".
<para>If you need to use multiple instances of th evaluator then you will need to call
<see cref="T:CSScriptLibrary.IEvaluator"/>.Clone().
</para>
</summary>
<value> The <see cref="T:CSScriptLibrary.CodeDomEvaluator"/> instance.</value>
</member>
<member name="P:CSScriptLibrary.CSScript.RoslynEvaluator">
<summary>
Global instance of <see cref="T:CSScriptLibrary.RoslynEvaluator"/>. This object is to be used for
dynamic loading of the C# code by using Roslyn "compiler as service".
<para>If you need to use multiple instances of th evaluator then you will need to call
<see cref="T:CSScriptLibrary.IEvaluator"/>.Clone().
</para>
</summary>
<value> The <see cref="T:CSScriptLibrary.RoslynEvaluator"/> instance.</value>
</member>
<member name="P:CSScriptLibrary.CSScript.EvaluatorConfig">
<summary>
Gets the CSScript.<see cref="T:CSScriptLibrary.EvaluatorConfig"/>, which controls the way code evaluation is conducted at runtime.
</summary>
<value>The evaluator CSScript.<see cref="T:CSScriptLibrary.EvaluatorConfig"/>.</value>
</member>
<member name="P:CSScriptLibrary.CSScript.Evaluator">
<summary>
Global instance of the generic <see cref="T:CSScriptLibrary.IEvaluator"/>. This object is to be used for
dynamic loading of the C# code by "compiler as service" based on the
<see cref="P:CSScriptLibrary.CSScript.EvaluatorConfig.Engine"/> value.
<para>Generic <see cref="T:CSScriptLibrary.IEvaluator"/> interface provides a convenient way of accessing
compilers without 'committing' to a specific compiler technology (e.g. Mono, Roslyn, CodeDOM). This may be
required during troubleshooting or performance tuning.</para>
<para>Switching between compilers can be done via global
CSScript.<see cref="P:CSScriptLibrary.CSScript.EvaluatorConfig.Engine"/>.</para>
<remarks>
By default CSScript.<see cref="P:CSScriptLibrary.CSScript.Evaluator"/> always returns a new instance of
<see cref="T:CSScriptLibrary.IEvaluator"/>. If this behavior is undesired change the evaluator access
policy by setting <see cref="P:CSScriptLibrary.CSScript.EvaluatorConfig"/>.Access value.
</remarks>
</summary>
<value>The <see cref="T:CSScriptLibrary.IEvaluator"/> instance.</value>
<example>
<code>
if(testingWithMono)
CSScript.EvaluatorConfig.Engine = EvaluatorEngine.Mono;
else
CSScript.EvaluatorConfig.Engine = EvaluatorEngine.Roslyn;
var sub = CSScript.Evaluator
.LoadDelegate&lt;Func&lt;int, int, int&gt;&gt;(
@"int Sub(int a, int b) {
return a - b;
}");
</code>
</example>
</member>
<member name="P:CSScriptLibrary.CSScript.MonoEvaluator">
<summary>
Global instance of <see cref="T:CSScriptLibrary.MonoEvaluator"/>. This object is to be used for
dynamic loading of the C# code by using Mono "compiler as service".
<para>If you need to use multiple instances of th evaluator then you will need to call
<see cref="T:CSScriptLibrary.IEvaluator"/>.Clone().</para>
<para>For the majority of the CS-Script script engine hosting scenarios the Mono compiler
is a preferred runtime. The major advantage is the compilation speed and superior (comparing to CodeDOM)
memory management.</para>
</summary>
<value>The <see cref="T:CSScriptLibrary.MonoEvaluator"/> instance.</value>
</member>
<member name="M:CSScriptLibrary.CSScript.#ctor">
<summary>
Default constructor
</summary>
</member>
<member name="M:CSScriptLibrary.CSScript.GetScriptName(System.Reflection.Assembly)">
<summary>
Determines whether the specified assembly is a script assembly (compiled script) and returns full path of the script file
used to compile the assembly. The analysis is based on the fact that script assembly (in hosing scenarios) is always
stamped with <see cref="T:System.Reflection.AssemblyDescriptionAttribute"/>, which contains name of the script file the
assembly was compiled from.
<para>The format of the description </para>
</summary>
<param name="assembly">The assembly.</param>
<returns>
Script file path if the specified assembly is a script assembly otherwise <c>null</c>.
</returns>
</member>
<member name="P:CSScriptLibrary.CSScript.Rethrow">
<summary>
Force caught exceptions to be re-thrown.
</summary>
</member>
<member name="M:CSScriptLibrary.CSScript.AggregateReferencedAssemblies(CSScriptLibrary.ScriptParser,System.String[],System.String)">
<summary>
Aggregates the referenced assemblies found by parser.
</summary>
<param name="parser">The parser.</param>
<param name="searchDirs">Extra search/probing directories.</param>
<param name="defaultRefAssemblies">The default reference assemblies. It is a semicolon separated assembly names string
(e.g. "System.Core; System.Linq;").</param>
<returns></returns>
</member>
<member name="P:CSScriptLibrary.CSScript.AssemblyResolvingEnabled">
<summary>
Enables automatic resolving of unsuccessful assembly probing on the base of the Settings.SearchDirs.
Default value is true.
CLR does assembly probing only in GAC and in the local (with respect to the application) directories. CS-Script
however allows you to specify extra directory(es) for assembly probing by setting enabling CS-Script assembly resolving
through setting the AssemblyResolvingEnabled to true and changing the Settings.SearchDirs appropriately.
</summary>
</member>
<member name="P:CSScriptLibrary.CSScript.EnableScriptLocationReflection">
<summary>
Gets or sets a value indicating whether setting 'location:&lt;assm_hash&gt;' environment variable is enabled.
<para>
This variable is useful for finding the compiled assembly file from the inside of the script code.
Even when the script loaded in-memory (InMemoryAssembly setting) but not from the original file.
</para>
<example>
<code>
// called from the script code
var asm_hash = Assembly.GetExecutingAssembly().GetHashCode();
var script_location = Environment.GetEnvironmentVariable(\"location:\" + asm_hash);
</code>
</example>
<para>
Enabling script reflection can lead to exhausting the capacity of the process environment variables dictionary.
That is why this feature is disabled by default.
</para>
</summary>
<value>
<c>true</c> if script location reflection is enabled otherwise, <c>false</c>.
</value>
</member>
<member name="P:CSScriptLibrary.CSScript.ShareHostRefAssemblies">
<summary>
Gets or sets the assembly sharing mode. If set to true all assemblies (including the host assembly itself)
currently loaded to the host application AppDomain are automatically available/accessible from the script code.
Default value is true.
Sharing the same assembly set between the host application and the script require AssemblyResolvingEnabled to
be enabled. Whenever SharesHostRefAssemblies is changed to true it automatically sets AssemblyResolvingEnabled to
true as well.
</summary>
</member>
<member name="F:CSScriptLibrary.CSScript.GlobalSettings">
<summary>
Settings object containing runtime settings, which controls script compilation/execution.
This is Settings class essentially is a deserialized content of the CS-Script configuration file (css_config.xml).
</summary>
</member>
<member name="F:CSScriptLibrary.CSScript.CompilingHistory">
<summary>
Collection of all compiling results. Every time the script is compiled the compiling result is added to this collection regardless of
the success or failure of the actual compilation.
</summary>
</member>
<member name="F:CSScriptLibrary.CSScript.HostingConcurrencyControl">
<summary>
The hosting concurrency control.
<list type="bullet">
<item ><description>
<para><c>ProcessScope</c></para>
Mutex name is a derived from the hosting process id.
Two calls to compile any script will be synchronized if the calls are made from the same host process.
</description></item>
<item ><description>
<para><c>ScriptProcessScope</c></para>
Mutex name is a derived from the combination of the script path and hosting process id.
Two calls to compile the same script file will be synchronized but only if the calls are made from the same host process.
</description></item>
<item ><description>
<para><c>ScriptSystemScope</c></para>
Mutex name is a derived from the script path.
Two calls to compile the same script file will be synchronized system wide.
</description></item>
</list>
</summary>
</member>
<member name="F:CSScriptLibrary.CSScript.LastCompilingResult">
<summary>
The last script compilation result. Note, invoking CSScript.Compile/CSScript.Load may not trigger the actual compilation if script caching is
engaged. Thus the <c>LastCompilingResult</c> value can be null.
</summary>
</member>
<member name="P:CSScriptLibrary.CSScript.KeepCompilingHistory">
<summary>
Gets or sets a value indicating whether compiling history should be kept. The compilation results are stored in <see cref="F:CSScriptLibrary.CSScript.CompilingHistory"></see>.
</summary>
<value>
<c>true</c> if compiling history should be kept; otherwise, <c>false</c>.
</value>
</member>
<member name="M:CSScriptLibrary.CSScript.Execute(CSScriptLibrary.PrintDelegate,System.String[])">
<summary>
Invokes global (static) CSExecutor (C# script engine)
</summary>
<param name="print">Print delegate to be used (if not null) to handle script engine output (eg. compilation errors).</param>
<param name="args">Script arguments.</param>
</member>
<member name="M:CSScriptLibrary.CSScript.Execute(CSScriptLibrary.PrintDelegate,System.String[],System.Boolean)">
<summary>
Invokes CSExecutor (C# script engine)
</summary>
<param name="print">Print delegate to be used (if not null) to handle script engine output (eg. compilation errors).</param>
<param name="args">Script arguments.</param>
<param name="rethrow">Flag, which indicated if script exceptions should be rethrowed by the script engine without any handling.</param>
</member>
<member name="M:CSScriptLibrary.CSScript.CompileCode(System.String,System.String[])">
<summary>
Compiles script code into assembly with CSExecutor
</summary>
<param name="scriptText">The script code to be compiled.</param>
<param name="refAssemblies">The string array containing file nemes to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly file name.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CompileCode(System.String,System.String,System.Boolean,System.String[])">
<summary>
Compiles script code into assembly with CSExecutor
</summary>
<param name="scriptText">The script code to be compiled.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly file name.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.GetScriptTempFile">
<summary>
Returns the name of the temporary file in the CSSCRIPT subfolder of Path.GetTempPath().
</summary>
<returns>Temporary file name.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.GetScriptTempDir">
<summary>
Returns the name of the CSScript temporary folder.
</summary>
<returns>Temporary folder name.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CompileFiles(System.String[],System.String,System.Boolean,System.String[])">
<summary>
Compiles multiple C# files into a single assembly with CSExecutor
</summary>
<param name="sourceFiles">Collection of the files to be compiled.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly file name.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CompileFiles(System.String[],System.String[])">
<summary>
Compiles multiple C# files into a single assembly with CSExecutor
</summary>
<param name="sourceFiles">Collection of the files to be compiled.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly file name.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.Compile(System.String,System.String,System.Boolean,System.String[])">
<summary>
Compiles script file into assembly with CSExecutor
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly file name.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CompileFile(System.String,System.String,System.Boolean,System.String[])">
<summary>
Compiles script file into assembly with CSExecutor
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly file name.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.Compile(System.String,System.String[])">
<summary>
Compiles script file into assembly (temporary file) with CSExecutor.
This method is an equivalent of the CSScript.Compile(scriptFile, null, false);
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly file name.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CompileFile(System.String,System.String[])">
<summary>
Compiles script file into assembly (temporary file) with CSExecutor.
This method is an equivalent of the CSScript.Compile(scriptFile, null, false);
</summary>
<param name="scriptFile">The path to script file to be compiled.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly file name.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CompileWithConfig(System.String,System.String,System.Boolean,System.String)">
<summary>
Compiles script file into assembly with CSExecutor. Uses specified config file to load script engine settings.
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="cssConfigFile">The name of CS-Script configuration file. If null the default config file will be used (appDir/css_config.xml).</param>
<returns>Compiled assembly file name.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CompileWithConfig(System.String,System.String,System.Boolean,System.String,System.String,System.String[])">
<summary>
Compiles script file into assembly with CSExecutor. Uses specified config file to load script engine settings and compiler specific options.
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="cssConfigFile">The name of CS-Script configuration file. If null the default config file will be used (appDir/css_config.xml).</param>
<param name="compilerOptions">The string value to be passed directly to the language compiler. </param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly file name.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CreateCompilerLock(System.String,System.Boolean)">
<summary>
Creates the compiler lock object (<see cref="T:System.Threading.Mutex"/>). The Mutex object is now initially owned.
<para>This object is to be used for the access synchronization to the compiled script file and it can be useful for the
tasks like cache purging or explicit script recompilation.</para>
<para>The optimisticConcurrencyModel has the same meaning as <see cref="P:csscript.Settings.OptimisticConcurrencyModel"/>.
And it is to be used to control the concurrency scope.</para>
</summary>
<param name="compiledScriptFile">The script file.</param>
<param name="optimisticConcurrencyModel">if set to <c>true</c> the operation is thread-safe within the current process.
Otherwise the operation is thread-safe system wide.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CreateCompilerLock(System.String)">
<summary>
Creates the compiler lock object (<see cref="T:System.Threading.Mutex"/>). The Mutex object is now initially owned.
<para>This object is to be used for the access synchronization to the compiled script file and it can be useful for the
tasks like cache purging or explicit script recompilation.</para>
<para>The concurrency/lock scope is controlled by <see cref="F:CSScriptLibrary.CSScript.HostingConcurrencyControl"/>.
And it is to be used to control the concurrency scope.</para>
</summary>
<param name="compiledScriptFile">The script file.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CompileWithConfig(System.String,System.String,System.Boolean,csscript.Settings,System.String,System.String[])">
<summary>
Compiles script file into assembly with CSExecutor. Uses script engine settings object and compiler specific options.
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="scriptSettings">The script engine Settings object.</param>
<param name="compilerOptions">The string value to be passed directly to the language compiler. </param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly file name.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CompileWithConfig(System.String,System.String,System.Boolean,csscript.Settings,System.String,csscript.CompilingInfo@,System.String[])">
<summary>
Compiles script file into assembly with CSExecutor. Uses script engine settings object and compiler specific options.
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="scriptSettings">The script engine Settings object.</param>
<param name="compilerOptions">The string value to be passed directly to the language compiler.</param>
<param name="compilingInfo">The compiling information. Populated with the compilation context.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script.</param>
<returns>
Compiled assembly file name.
</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadMethod(System.String,System.String[])">
<summary>
Surrounds the method implementation code into a class and compiles it code into assembly with CSExecutor and loads it in current AppDomain.
The most convenient way of using dynamic methods is to declare them as static methods. In this case they can be invoked with wild card character
as a class name (e.g. asmHelper.Invoke("*.SayHello")). Otherwise you will need to instantiate class "DyamicClass.Script" in order to call dynamic method.
You can have multiple methods implementations in the single methodCode. Also you can specify namespaces at the beginning of the code:
CSScript.LoadMethod(
@"using System.Windows.Forms;
public static void SayHello(string greeting)
{
MessageBoxSayHello(greeting);
ConsoleSayHello(greeting);
}
public static void MessageBoxSayHello(string greeting)
{
MessageBox.Show(greeting);
}
public static void ConsoleSayHello(string greeting)
{
Console.WriteLine(greeting);
}");
</summary>
<param name="methodCode">The C# code, containing method implementation.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadDelegate``1(System.String,System.String,System.Boolean,System.String[])">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>Scripting.DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns instance of <c>T</c> delegate for the first method in the auto-generated class.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
var Product = CSScript.LoadDelegate&lt;Func&lt;int, int, int&gt;&gt;(
@"int Product(int a, int b)
{
return a * b;
}");
int result = Product(3, 2);
</code>
</example>
<param name="methodCode">The C# code.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Instance of <c>T</c> delegate.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CreateAction(System.String,System.String,System.Boolean,System.String[])">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>Scripting.DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns instance of <see cref="T:CSScriptLibrary.MethodDelegate"/> for the first method in the auto-generated class.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
var SayHello = CSScript.CreateAction(@"void SayHello(string greeting)
{
Console.WriteLine(greeting);
}");
SayHello("Hello World!");
</code>
</example>
<param name="methodCode">The C# code.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Instance of <see cref="T:CSScriptLibrary.MethodDelegate"/>.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CreateFunc``1(System.String,System.String,System.Boolean,System.String[])">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>Scripting.DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns instance of <see cref="T:CSScriptLibrary.MethodDelegate"/> for the first method in the auto-generated class.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
var product = CSScript.CreateFunc&lt;intgt;(@"int Product(int a, int b)
{
return a * b;
}");
int result = product(3, 4);
</code>
</example>
<typeparam name="T">The delegate return type.</typeparam>
<param name="methodCode">The C# code.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Instance of <see cref="T:CSScriptLibrary.MethodDelegate"/>.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadDelegate``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>Scripting.DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns instance of <c>T</c> delegate for the first method in the auto-generated class.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
var Product = CSScript.LoadDelegate&lt;Func&lt;int, int, int&gt;&gt;(
@"int Product(int a, int b)
{
return a * b;
}");
int result = Product(3, 2);
</code>
</example>
<param name="methodCode">The C# code.</param>
<returns>Instance of <c>T</c> delegate.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CreateAction(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>Scripting.DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns instance of <see cref="T:CSScriptLibrary.MethodDelegate"/> for the first method in the auto-generated class.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
var SayHello = CSScript.CreateAction(@"void SayHello(string greeting)
{
Console.WriteLine(greeting);
}");
SayHello("Hello World!");
</code>
</example>
<param name="methodCode">The C# code.</param>
<returns>Instance of <see cref="T:CSScriptLibrary.MethodDelegate"/>.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.StopVBCSCompilers">
<summary>
Stop any running instances of the compiler server if any.
<para>
Stopping is needed in order to prevent any problems with copying/moving CS-Script binary files (e.g. Roslyn compilers).
Servers restart automatically on any attempt to compile any C#/VB.NET code by any client (e.g. Visual Studio, MSBuild, CS-Script).
</para>
</summary>
</member>
<member name="M:CSScriptLibrary.CSScript.CreateFunc``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>Scripting.DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns instance of <see cref="T:CSScriptLibrary.MethodDelegate"/> for the first method in the auto-generated class.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
var product = CSScript.CreateFunc&lt;intgt;(@"int Product(int a, int b)
{
return a * b;
}");
int result = product(3, 4);
</code>
</example>
<typeparam name="T">The delegate return type.</typeparam>
<param name="methodCode">The C# code.</param>
<returns>Instance of <see cref="T:CSScriptLibrary.MethodDelegate"/>.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadMethod(System.String,System.String,System.Boolean,System.String[])">
<summary>
Surrounds the method implementation code into a class and compiles it code into
assembly with CSExecutor and loads it in current AppDomain. The most convenient way of
using dynamic methods is to declare them as static methods. In this case they can be
invoked with wild card character as a class name (e.g. asmHelper.Invoke("*.SayHello")).
Otherwise you will need to instantiate class "DyamicClass.Script" in order to call dynamic method.
You can have multiple methods implementations in the single methodCode. Also you can specify namespaces at the beginning of the code:
<code>
CSScript.LoadMethod(
@"using System.Windows.Forms;
public static void SayHello(string greeting)
{
MessageBoxSayHello(greeting);
ConsoleSayHello(greeting);
}
public static void MessageBoxSayHello(string greeting)
{
MessageBox.Show(greeting);
}
public static void ConsoleSayHello(string greeting)
{
Console.WriteLine(greeting);
}");
</code>
</summary>
<param name="methodCode">The C# code, containing method implementation.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadCodeFrom(System.String,System.String[])">
<summary>
Compiles script code from the specified file into assembly with CSExecutor and loads it in current AppDomain.
<para>This method is a logical equivalent of the corresponding <c>LoadCode</c> method except the code is
not specified as a call argument but read from the file instead.</para>
<para>It is recommended to use LoadFrom method instead as it is more straight forward and arguably faster.
Use LoadCodeFrom only if you indeed want to disassociate your script code from the script file or
if the original location of the source file some how is incompatible with the actual C# compiler.</para>
</summary>
<param name="scriptFile">The script file.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadFiles(System.String[],System.String,System.Boolean,System.String[])">
<summary>
Compiles code from the specified files into assembly with CSExecutor and loads it in current AppDomain.
<para>This method is a logical equivalent of the corresponding <c>LoadCode</c> method except the code is
not specified as a call argument but read from the file instead.</para>
</summary>
<param name="sourceFiles">The source files to be compiled.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadFiles(System.String[],System.String[])">
<summary>
Compiles code from the specified files into assembly with CSExecutor and loads it in current AppDomain.
<para>This method is a logical equivalent of the corresponding <c>LoadCode</c> method except the code is
not specified as a call argument but read from the file instead.</para>
</summary>
<param name="sourceFiles">The source files to be compiled.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadCodeFrom(System.String,System.String,System.Boolean,System.String[])">
<summary>
Compiles script code from the specified file into assembly with CSExecutor and loads it in current AppDomain.
<para>This method is a logical equivalent of the corresponding <c>LoadCode</c> method except the code is
not specified as a call argument but read from the file instead.</para>
<para>It is recommended to use LoadFrom method instead as it is more straight forward and arguably faster.
Use LoadCodeFrom only if you indeed want to disassociate your script code from the script file or
if the original location of the source file some how is incompatible with the actual C# compiler.</para>
</summary>
<param name="scriptFile">The script file.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadCodeFrom(System.String,System.String,System.String,System.Boolean,System.String[])">
<summary>
Compiles script code from the specified file into assembly with CSExecutor and loads it in current AppDomain.
</summary>
<para>This method is a logical equivalent of the corresponding <c>LoadCode</c> method except the code is
not specified as a call argument but read from the file instead.</para>
<para>It is recommended to use LoadFrom method instead as it is more straight forward and arguably faster.
Use LoadCodeFrom only if you indeed want to disassociate your script code from the script file or
if the original location of the source file some how is incompatible with the actual C# compiler.</para>
<param name="scriptFile">The script file.</param>
<param name="tempFileExtension">The file extension of the temporary file to hold script code during compilation. This parameter may be
needed if custom CS-Script compilers rely on file extension to identify the script syntax.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadCode(System.String,System.String[])">
<summary>
Compiles script code into assembly with CSExecutor and loads it in current AppDomain.
</summary>
<param name="scriptText">The script code to be compiled.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadCode(System.String,System.String,System.Boolean,System.String[])">
<summary>
Compiles script code into assembly with CSExecutor and loads it in current AppDomain.
</summary>
<param name="scriptText">The script code to be compiled.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadCode(System.String,System.String,System.String,System.Boolean,System.String[])">
<summary>
Compiles script code into assembly with CSExecutor and loads it in current AppDomain.
</summary>
<param name="scriptText">The script code to be compiled.</param>
<param name="tempFileExtension">The file extension of the temporary file to hold script code during compilation. This parameter may be
needed if custom CS-Script compilers rely on file extension to identify the script syntax.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.CleanupDynamicSources">
<summary>
Cleans up all abandoned dynamic C# sources (temp files) generated by LodCode*() API methods. You don't need to use this
method as it is scheduled for execution at the end of the application.
<para>
However automatic cleanup may fail under certain circumstances as it is scheduled by the
AppDomain.CurrentDomain.ProcessExit event, which is not guaranteed to be always executed.
In such cases or if you want to clear the directory prior the execution you can call <c>CSScript.CleanupDynamicSources()</c> explicitly.
</para>
</summary>
</member>
<member name="M:CSScriptLibrary.CSScript.Load(System.String,System.String,System.Boolean,System.String[])">
<summary>
Compiles script file into assembly with CSExecutor and loads it in current AppDomain
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled/Loaded assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadFile(System.String,System.String,System.Boolean,System.String[])">
<summary>
Compiles script file into assembly with CSExecutor and loads it in current AppDomain
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled/Loaded assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadWithConfig(System.String,System.String,System.Boolean,csscript.Settings,System.String,System.String[])">
<summary>
Compiles script file into assembly with CSExecutor and loads it in current AppDomain
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<param name="assemblyFile">The path of the compiled assembly to be created. If set to null a temporary file name will be used.</param>
<param name="debugBuild">'true' if debug information should be included in assembly; otherwise, 'false'.</param>
<param name="scriptSettings">The script engine Settings object. You can pass null to load <c>CSScript.GlobalSettings</c>. </param>
<param name="compilerOptions">The string value to be passed directly to the language compiler. </param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled/Loaded assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.Load(System.String)">
<summary>
Compiles script file into assembly (temporary file) with CSExecutor and loads it in current AppDomain.
This method is an equivalent of the CSScript.Load(scriptFile, null, false);
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<returns>Compiled/Loaded assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadFile(System.String)">
<summary>
Compiles script file into assembly (temporary file) with CSExecutor and loads it in current AppDomain.
This method is an equivalent of the CSScript.Load(scriptFile, null, false);
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<returns>Compiled/Loaded assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.Load(System.String,System.String[])">
<summary>
Compiles script file into assembly (temporary file) with CSExecutor and loads it in current AppDomain.
This method is an equivalent of the CSScript.Load(scriptFile, null, false);
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled/Loaded assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadFile(System.String,System.String[])">
<summary>
Compiles script file into assembly (temporary file) with CSExecutor and loads it in current AppDomain.
This method is an equivalent of the CSScript.Load(scriptFile, null, false);
</summary>
<param name="scriptFile">The path to the script file to be compiled.</param>
<param name="refAssemblies">The string array containing file names to the additional assemblies referenced by the script. </param>
<returns>Compiled/Loaded assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.DefaultPrint(System.String)">
<summary>
Default implementation of displaying application messages.
</summary>
</member>
<member name="T:CSScriptLibrary.CSScript.LoadedScript">
<summary>
LoadedScript is a class, which holds information about the script file location and it's compiled and loaded assmbly (current AppDomain).
</summary>
</member>
<member name="M:CSScriptLibrary.CSScript.LoadedScript.#ctor(System.String,System.Reflection.Assembly)">
<summary>
Creates instance of LoadedScript
</summary>
<param name="script">Script file location.</param>
<param name="asm">Compiled script assembly loaded into current AppDomain.</param>
</member>
<member name="F:CSScriptLibrary.CSScript.LoadedScript.script">
<summary>
Script file location.
</summary>
</member>
<member name="F:CSScriptLibrary.CSScript.LoadedScript.asm">
<summary>
Compiled script assembly loaded into current AppDomain.
</summary>
</member>
<member name="F:CSScriptLibrary.CSScript.CacheEnabled">
<summary>
Controls if ScriptCache should be used when script file loading is requested (CSScript.Load(...)). If set to true and the script file was previously compiled and already loaded
the script engine will use that compiled script from the cache instead of compiling it again.
Note the script cache is always maintained by the script engine. The CacheEnabled property only indicates if the cached script should be used or not when CSScript.Load(...) method is called.
</summary>
</member>
<member name="M:CSScriptLibrary.CSScript.IgnoreSystemWideConfig">
<summary>
Ignores the system wide configuration for CS-Script (e.g. default referenced assemblies, alternative compiler).
</summary>
<returns>Folder where the current system wide configuration file (css_config.xml) is located.</returns>
</member>
<member name="P:CSScriptLibrary.CSScript.ResolveSourceAlgorithm">
<summary>
The resolve source file algorithm.
<para>
The default algorithm searches for script file by given script name. Search order:
1. Current directory
2. extraDirs (usually %CSSCRIPT_DIR%\Lib and ExtraLibDirectory)
3. PATH
Also fixes file name if user did not provide extension for script file (assuming .cs extension)
</para>
<para>If the default implementation isn't suitable then you can set <c>CSScript.ResolveSourceAlgorithm</c>
to the alternative implementation of the probing algorithm.</para>
</summary>
</member>
<member name="P:CSScriptLibrary.CSScript.ResolveAssemblyAlgorithm">
<summary>
Resolves namespace/assembly(file) name into array of assembly locations (local and GAC ones).
</summary>
<para>If the default implementation isn't suitable then you can set <c>CSScript.ResolveAssemblyAlgorithm</c>
to the alternative implementation of the probing algorithm.</para>
<returns>collection of assembly file names where namespace is implemented</returns>
</member>
<member name="P:CSScriptLibrary.CSScript.ScriptCache">
<summary>
Cache of all loaded script files for the current process.
</summary>
</member>
<member name="M:CSScriptLibrary.CSScript.GetCachedScriptAssemblyFile(System.String)">
<summary>
Returns file path of the cached script assembly matching the script file name.
</summary>
<param name="file">Script file path.</param>
<returns>Path to the previously compiled script assembly.
Returns null if the cached script cannot be found.
</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.GetLoadedCachedScriptAssembly(System.String)">
<summary>
Returns loaded cached script assembly matching the script file name.
</summary>
<param name="file">Script file path.</param>
<returns>Assembly loaded in the current AppDomain.
Returns null if the loaded script cannot be found.
</returns>
</member>
<member name="M:CSScriptLibrary.CSScript.GetCachedScriptPath(System.String)">
<summary>
Returns path to the cached script assembly matching the script file name.
</summary>
<param name="scriptFile">Script file path.</param>
<returns>Cached (compiled) script assembly file path.</returns>
</member>
<member name="P:CSScriptLibrary.CSScript.IsOutOfDateAlgorithm">
<summary>
Compiled script probing handler. Analyses the script file and the compiled script (script assembly)
and determines if the script assembly is out of data and needs to be recompiled.
<para>The default implementation is <see cref="P:CSScriptLibrary.CSScript.CachProbing.Advanced"/>.</para>
<para>You can always supply your custom algorithm. For example <p>
<c>CSScript.IsOutOfDateAlgorithm = (s, a) => true;</c></p>
fill force CS-Script to recompile the script every time it is loaded.</para>
</summary>
</member>
<member name="P:CSScriptLibrary.CSScript.IsOutOfDate">
<summary>
Compiled script probing handler. Analyses the script file and the compiled script (script assembly)
and determines if the script assembly is out of data and needs to be recompiled.
<para>The default implementation is <see cref="P:CSScriptLibrary.CSScript.CachProbing.Simplified"/>.</para>
<para>You can always supply your custom algorithm. For example <p>
<c>CSScript.IsOutOfDate = (s, a) => true;</c></p>
will force CS-Script to recompile the script every time it is loaded.</para>
</summary>
</member>
<member name="T:CSScriptLibrary.CSScript.CachProbing">
<summary>
This class contains default implementations of the <see cref="P:CSScriptLibrary.CSScript.IsOutOfDateAlgorithm"/>.
</summary>
</member>
<member name="P:CSScriptLibrary.CSScript.CachProbing.Simplified">
<summary>
Gets the simplified IsOutOfDateAlgorithm implementation. The implementation is based on analysis of the 'LastWriteTimeUtc' timestamps of the script and compiled script assembly. But not the script dependencies.
</summary>
</member>
<member name="P:CSScriptLibrary.CSScript.CachProbing.Advanced">
<summary>
Gets the comprehensive IsOutOfDateAlgorithm implementation. The implementation is based on analysis of the 'LastWriteTimeUtc' timestamps of the script, compiled script assembly and all script dependencies.
</summary>
</member>
<member name="T:CSScriptLibrary.CodeDomEvaluator">
<summary>
A wrapper class that encapsulates the functionality of the CodeDom evaluator (<see cref="N:Microsoft.CodeAnalysis.CSharp.Scripting"/>).
</summary>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.#ctor">
<summary>
Initializes a new instance of the <see cref="T:CSScriptLibrary.CodeDomEvaluator" /> class.
</summary>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.Clone(System.Boolean)">
<summary>
Clones itself as <see cref="T:CSScriptLibrary.IEvaluator"/>.
<para>
This method returns a freshly initialized copy of the <see cref="T:CSScriptLibrary.IEvaluator"/>.
The cloning 'depth' can be controlled by the <paramref name="copyRefAssemblies"/>.
</para>
<para>
This method is a convenient technique when multiple <see cref="T:CSScriptLibrary.IEvaluator"/> instances
are required (e.g. for concurrent script evaluation).
</para>
</summary>
<param name="copyRefAssemblies">if set to <c>true</c> all referenced assemblies from the parent <see cref="T:CSScriptLibrary.IEvaluator"/>
will be referenced in the cloned copy.</param>
<returns>The freshly initialized instance of the <see cref="T:CSScriptLibrary.IEvaluator"/>.</returns>
</member>
<member name="P:CSScriptLibrary.CodeDomEvaluator.DebugBuild">
<summary>
Gets or sets a value indicating whether to compile script with debug symbols.
<para>Note, currently only CodeDom fully supports generation of debugging symbols.</para>
</summary>
<value><c>true</c> if 'debug build'; otherwise, <c>false</c>.</value>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.CompileCode(System.String)">
<summary>
Evaluates (compiles) C# code (script). The C# code is a typical C# code containing a single or multiple class definition(s).
</summary>
<example>
<code>
Assembly asm = CSScript.CodeDomEvaluator
.CompileCode(@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
dynamic script = asm.CreateObject("*");
var result = script.Sum(7, 3);
</code>
</example>
<param name="scriptText">The C# script text.</param>
<returns>The compiled assembly.</returns>
</member>
<member name="P:CSScriptLibrary.CodeDomEvaluator.DisableReferencingFromCode">
<summary>
Gets or sets the flag indicating if the script code should be analyzed and the assemblies
that the script depend on (via '//css_...' and 'using ...' directives) should be referenced.
</summary>
<value></value>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.CompileMethod(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>) and evaluates it.
<para>
This method is a logical equivalent of <see cref="M:CSScriptLibrary.IEvaluator.CompileCode(System.String)"/> but is allows you to define
your script class by specifying class method instead of whole class declaration.</para>
</summary>
<example>
<code>
dynamic script = CSScript.CodeDomEvaluator
.CompileMethod(@"int Sum(int a, int b)
{
return a+b;
}")
.CreateObject("*");
var result = script.Sum(7, 3);
</code>
</example>
<param name="code">The C# code.</param>
<returns>The compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.CreateDelegate(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns non-typed <see cref="T:CSScriptLibrary.MethodDelegate"/> for class-less style of invoking.</para>
</summary>
<example>
<code>
var log = CSScript.CodeDomEvaluator
.CreateDelegate(@"void Log(string message)
{
Console.WriteLine(message);
}");
log("Test message");
</code>
</example>
<param name="code">The C# code.</param>
<returns> The instance of a non-typed <see cref="T:CSScriptLibrary.MethodDelegate"/></returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.CreateDelegate``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns typed <see cref="T:CSScriptLibrary.MethodDelegate`1"/> for class-less style of invoking.</para>
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<example>
<code>
var product = CSScript.CodeDomEvaluator
.CreateDelegate&lt;int&gt;(@"int Product(int a, int b)
{
return a * b;
}");
int result = product(3, 2);
</code>
</example>
<param name="code">The C# code.</param>
<returns> The instance of a typed <see cref="T:CSScriptLibrary.MethodDelegate`1"/></returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.GetReferencedAssemblies">
<summary>
Loads and returns set of referenced assemblies.
<para>
Notre: the set of assemblies is cleared on Reset.
</para>
</summary>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.GetReferencedAssemblies(System.String,System.String[])">
<summary>
Analyses the script code and returns set of locations for the assemblies referenced from the code with CS-Script directives (//css_ref).
</summary>
<param name="code">The script code.</param>
<param name="searchDirs">The assembly search/probing directories.</param>
<returns>Array of the referenced assemblies</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.LoadCode(System.String,System.Object[])">
<summary>
Evaluates and loads C# code to the current AppDomain. Returns instance of the first class defined in the code.
</summary>
<example>The following is the simple example of the LoadCode usage:
<code>
dynamic script = CSScript.CodeDomEvaluator
.LoadCode(@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
int result = script.Sum(1, 2);
</code>
</example>
<param name="scriptText">The C# script text.</param>
<param name="args">The non default constructor arguments.</param>
<returns>Instance of the class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.LoadCode``1(System.String,System.Object[])">
<summary>
Evaluates and loads C# code to the current AppDomain. Returns instance of the first class defined in the code.
After initializing the class instance it is aligned to the interface specified by the parameter <c>T</c>.
<para><c>Note:</c> Because the interface alignment is a duck typing implementation the script class doesn't have to
inherit from <c>T</c>.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
public interface ICalc
{
int Sum(int a, int b);
}
....
ICalc calc = CSScript.CodeDomEvaluator
.LoadCode&lt;ICalc&gt;(@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
int result = calc.Sum(1, 2);
</code>
</example>
<typeparam name="T">The type of the interface type the script class instance should be aligned to.</typeparam>
<param name="scriptText">The C# script text.</param>
<param name="args">The non default type <c>T</c> constructor arguments.</param>
<returns>Aligned to the <c>T</c> interface instance of the class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.LoadDelegate``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads
the class to the current AppDomain.
<para>Returns instance of <c>T</c> delegate for the first method in the auto-generated class.</para>
</summary>
<example>
<code>
var Product = CSScript.CodeDomEvaluator
.LoadDelegate&lt;Func&lt;int, int, int&gt;&gt;(
@"int Product(int a, int b)
{
return a * b;
}");
int result = Product(3, 2);
</code>
</example>
<param name="code">The C# code.</param>
<returns>Instance of <c>T</c> delegate.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.LoadFile(System.String)">
<summary>
Evaluates and loads C# code from the specified file to the current AppDomain. Returns instance of the first
class defined in the script file.
</summary>
<example>The following is the simple example of the interface alignment:
<code>
dynamic script = CSScript.CodeDomEvaluator
.LoadFile("calc.cs");
int result = script.Sum(1, 2);
</code>
</example>/// <param name="scriptFile">The C# script file.</param>
<returns>Instance of the class defined in the script file.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.LoadFile``1(System.String)">
<summary>
Evaluates and loads C# code from the specified file to the current AppDomain. Returns instance of the first
class defined in the script file.
After initializing the class instance it is aligned to the interface specified by the parameter <c>T</c>.
<para><c>Note:</c> the script class does not have to inherit from the <c>T</c> parameter as the proxy type
will be generated anyway.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
public interface ICalc
{
int Sum(int a, int b);
}
....
ICalc calc = CSScript.CodeDomEvaluator
.LoadFile&lt;ICalc&gt;("calc.cs");
int result = calc.Sum(1, 2);
</code>
</example>
<typeparam name="T">The type of the interface type the script class instance should be aligned to.</typeparam>
<param name="scriptFile">The C# script text.</param>
<returns>Aligned to the <c>T</c> interface instance of the class defined in the script file.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.LoadMethod(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads
the class to the current AppDomain.
</summary>
<example>The following is the simple example of the LoadMethod usage:
<code>
dynamic script = CSScript.CodeDomEvaluator
.LoadMethod(@"int Product(int a, int b)
{
return a * b;
}");
int result = script.Product(3, 2);
</code>
</example>
<param name="code">The C# script text.</param>
<returns>Instance of the first class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.LoadMethod``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads
the class to the current AppDomain.
<para>
After initializing the class instance it is aligned to the interface specified by the parameter <c>T</c>.
</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
public interface ICalc
{
int Sum(int a, int b);
int Div(int a, int b);
}
....
ICalc script = CSScript.CodeDomEvaluator
.LoadMethod&lt;ICalc&gt;(@"public int Sum(int a, int b)
{
return a + b;
}
public int Div(int a, int b)
{
return a/b;
}");
int result = script.Div(15, 3);
</code>
</example>
<typeparam name="T">The type of the interface type the script class instance should be aligned to.</typeparam>
<param name="code">The C# script text.</param>
<returns>Aligned to the <c>T</c> interface instance of the auto-generated class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.ReferenceAssembliesFromCode(System.String,System.String[])">
<summary>
References the assemblies from the script code.
<para>The method analyses and tries to resolve CS-Script directives (e.g. '//css_ref') and 'used' namespaces based on the
optional search directories.</para>
</summary>
<param name="code">The script code.</param>
<param name="searchDirs">The assembly search/probing directories.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.ReferenceAssembly(System.String)">
<summary>
References the given assembly by the assembly path.
<para>It is safe to call this method multiple times for the same assembly. If the assembly already referenced it will not
be referenced again.</para>
</summary>
<param name="assembly">The path to the assembly file.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.ReferenceAssembly(System.Reflection.Assembly)">
<summary>
References the given assembly.
<para>It is safe to call this method multiple times
for the same assembly. If the assembly already referenced it will not
be referenced again.
</para>
</summary>
<param name="assembly">The assembly instance.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.ReferenceAssemblyByName(System.String)">
<summary>
References the name of the assembly by its partial name.
<para>Note that the referenced assembly will be loaded into the host AppDomain in order to resolve assembly partial name.</para>
<para>It is an equivalent of <c>Evaluator.ReferenceAssembly(Assembly.LoadWithPartialName(assemblyPartialName))</c></para>
</summary>
<param name="assemblyPartialName">Partial name of the assembly.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.TryReferenceAssemblyByNamespace(System.String,System.Boolean@)">
<summary>
References the assembly by the given namespace it implements.
</summary>
<param name="namespace">The namespace.</param>
<param name="resolved">Set to <c>true</c> if the namespace was successfully resolved (found) and
the reference was added; otherwise, <c>false</c>.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.ReferenceAssemblyByNamespace(System.String)">
<summary>
References the assembly by the given namespace it implements.
<para>Adds assembly reference if the namespace was successfully resolved (found) and, otherwise does nothing</para>
</summary>
<param name="namespace">The namespace.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.ReferenceAssemblyOf(System.Object)">
<summary>
References the assembly by the object, which belongs to this assembly.
<para>It is safe to call this method multiple times
for the same assembly. If the assembly already referenced it will not
be referenced again.
</para>
</summary>
<param name="obj">The object, which belongs to the assembly to be referenced.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.ReferenceAssemblyOf``1">
<summary>
References the assembly by the object, which belongs to this assembly.
<para>It is safe to call this method multiple times
for the same assembly. If the assembly already referenced it will not
be referenced again.
</para>
</summary>
<typeparam name="T">The type which is implemented in the assembly to be referenced.</typeparam>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.ReferenceDomainAssemblies(CSScriptLibrary.DomainAssemblies)">
<summary>
References the assemblies the are already loaded into the current <c>AppDomain</c>.
</summary>
<param name="assemblies">The type of assemblies to be referenced.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.CodeDomEvaluator.Reset(System.Boolean)">
<summary>
Resets Evaluator.
<para>
Resetting means clearing all referenced assemblies, recreating evaluation infrastructure (e.g. compiler setting)
and reconnection to or recreation of the underlying compiling services.
</para>
<para>Optionally the default current AppDomain assemblies can be referenced automatically with
<paramref name="referenceDomainAssemblies"/>.</para>
</summary>
<param name="referenceDomainAssemblies">if set to <c>true</c> the default assemblies of the current AppDomain
will be referenced (see <see cref="M:CSScriptLibrary.CodeDomEvaluator.ReferenceDomainAssemblies(CSScriptLibrary.DomainAssemblies)"/> method).
</param>
<returns>The freshly initialized instance of the <see cref="T:CSScriptLibrary.IEvaluator"/>.</returns>
</member>
<member name="T:CSScriptLibrary.CSScriptRoslynExtensions">
<summary>
Method extensions for Roslyn.<see cref="N:Microsoft.CodeAnalysis.CSharp.Scripting"/>
</summary>
</member>
<member name="M:CSScriptLibrary.CSScriptRoslynExtensions.Load(System.String)">
<summary>
Single step evaluating method for Roslyn compiler. Compiles specified code, loads the compiled assembly and returns it to the caller.
</summary>
<param name="code">The code.</param>
<returns></returns>
</member>
<member name="T:CSScriptLibrary.RoslynEvaluator">
<summary>
A wrapper class that encapsulates the functionality of the Roslyn evaluator (<see cref="N:Microsoft.CodeAnalysis.CSharp.Scripting"/>).
</summary>
</member>
<member name="P:CSScriptLibrary.RoslynEvaluator.DebugBuild">
<summary>
Gets or sets a value indicating whether to compile script with debug symbols.
<para>Note, affect of setting <c>DebugBuild</c> will always depend on the compiler implementation:
<list type="bullet">
<item><term>CodeDom</term><description>Fully supports. Generates debugging symbols (script can be debugged) and defines <c>DEBUG</c> and <c>TRACE</c> conditional symbols</description> </item>
<item><term>Mono</term><description>Partially supports. Defines <c>DEBUG</c> and <c>TRACE</c> conditional symbols</description> </item>
<item><term>Roslyn</term><description>Doesn't supports at all.</description> </item>
</list>
</para>
</summary>
<value><c>true</c> if 'debug build'; otherwise, <c>false</c>.</value>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.#ctor">
<summary>
Initializes a new instance of the <see cref="T:CSScriptLibrary.RoslynEvaluator" /> class.
</summary>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.Clone(System.Boolean)">
<summary>
Clones itself as <see cref="T:CSScriptLibrary.IEvaluator"/>.
<para>
This method returns a freshly initialized copy of the <see cref="T:CSScriptLibrary.IEvaluator"/>.
The cloning 'depth' can be controlled by the <paramref name="copyRefAssemblies"/>.
</para>
<para>
This method is a convenient technique when multiple <see cref="T:CSScriptLibrary.IEvaluator"/> instances
are required (e.g. for concurrent script evaluation).
</para>
</summary>
<param name="copyRefAssemblies">if set to <c>true</c> all referenced assemblies from the parent <see cref="T:CSScriptLibrary.IEvaluator"/>
will be referenced in the cloned copy.</param>
<returns>The freshly initialized instance of the <see cref="T:CSScriptLibrary.IEvaluator"/>.</returns>
</member>
<member name="P:CSScriptLibrary.RoslynEvaluator.CompilerSettings">
<summary>
Gets or sets the compiler settings.
</summary>
<value>The compiler settings.</value>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.LoadCompilers">
<summary>
Loads the assemblies implementing Roslyn compilers.
<para>Roslyn compilers are extremely heavy and loading the compiler assemblies for with the first
evaluation call can take a significant time to complete (in some cases up to 4 seconds) while the consequent
calls are very fast.
</para>
<para>
You may want to call this method to pre-load the compiler assembly your script evaluation performance.
</para>
</summary>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.CompileCode(System.String)">
<summary>
Evaluates (compiles) C# code (script). The C# code is a typical C# code containing a single or multiple class definition(s).
</summary>
<example>
<code>
Assembly asm = CSScript.RoslynEvaluator
.CompileCode(@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
dynamic script = asm.CreateObject("*");
var result = script.Sum(7, 3);
</code>
</example>
<param name="scriptText">The C# script text.</param>
<returns>The compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.CompileMethod(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>) and evaluates it.
<para>
This method is a logical equivalent of <see cref="M:CSScriptLibrary.IEvaluator.CompileCode(System.String)"/> but is allows you to define
your script class by specifying class method instead of whole class declaration.</para>
</summary>
<example>
<code>
dynamic script = CSScript.RoslynEvaluator
.CompileMethod(@"int Sum(int a, int b)
{
return a+b;
}")
.CreateObject("*");
var result = script.Sum(7, 3);
</code>
</example>
<param name="code">The C# code.</param>
<returns>The compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.CreateDelegate(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns non-typed <see cref="T:CSScriptLibrary.MethodDelegate"/> for class-less style of invoking.</para>
</summary>
<example>
<code>
var log = CSScript.RoslynEvaluator
.CreateDelegate(@"void Log(string message)
{
Console.WriteLine(message);
}");
log("Test message");
</code>
</example>
<param name="code">The C# code.</param>
<returns> The instance of a non-typed <see cref="T:CSScriptLibrary.MethodDelegate"/></returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.CreateDelegate``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns typed <see cref="T:CSScriptLibrary.MethodDelegate`1"/> for class-less style of invoking.</para>
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<example>
<code>
var product = CSScript.RoslynEvaluator
.CreateDelegate&lt;int&gt;(@"int Product(int a, int b)
{
return a * b;
}");
int result = product(3, 2);
</code>
</example>
<param name="code">The C# code.</param>
<returns> The instance of a typed <see cref="T:CSScriptLibrary.MethodDelegate`1"/></returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.GetReferencedAssemblies">
<summary>
Returns set of referenced assemblies.
<para>
Notre: the set of assemblies is cleared on Reset.
</para>
</summary>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.GetReferencedAssemblies(System.String,System.String[])">
<summary>
Analyses the script code and returns set of locations for the assemblies referenced from the code with CS-Script directives (//css_ref).
</summary>
<param name="code">The script code.</param>
<param name="searchDirs">The assembly search/probing directories.</param>
<returns>Array of the referenced assemblies</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.LoadCode(System.String,System.Object[])">
<summary>
Evaluates and loads C# code to the current AppDomain. Returns instance of the first class defined in the code.
</summary>
<example>The following is the simple example of the LoadCode usage:
<code>
dynamic script = CSScript.RoslynEvaluator
.LoadCode(@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
int result = script.Sum(1, 2);
</code>
</example>
<param name="scriptText">The C# script text.</param>
<param name="args">The non default constructor arguments.</param>
<returns>Instance of the class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.LoadCode``1(System.String,System.Object[])">
<summary>
Evaluates and loads C# code to the current AppDomain. Returns instance of the first class defined in the code.
After initializing the class instance it is aligned to the interface specified by the parameter <c>T</c>.
<para><c>Note:</c> Because the interface alignment is a duck typing implementation the script class doesn't have to
inherit from <c>T</c>.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
public interface ICalc
{
int Sum(int a, int b);
}
....
ICalc calc = CSScript.RoslynEvaluator
.LoadCode&lt;ICalc&gt;(@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
int result = calc.Sum(1, 2);
</code>
</example>
<typeparam name="T">The type of the interface type the script class instance should be aligned to.</typeparam>
<param name="scriptText">The C# script text.</param>
<param name="args">The non default type <c>T</c> constructor arguments.</param>
<returns>Aligned to the <c>T</c> interface instance of the class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.LoadDelegate``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads
the class to the current AppDomain.
<para>Returns instance of <c>T</c> delegate for the first method in the auto-generated class.</para>
</summary>
<example>
<code>
var Product = CSScript.RoslynEvaluator
.LoadDelegate&lt;Func&lt;int, int, int&gt;&gt;(
@"int Product(int a, int b)
{
return a * b;
}");
int result = Product(3, 2);
</code>
</example>
<param name="code">The C# code.</param>
<returns>Instance of <c>T</c> delegate.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.LoadFile(System.String)">
<summary>
Evaluates and loads C# code from the specified file to the current AppDomain. Returns instance of the first
class defined in the script file.
</summary>
<example>The following is the simple example of the interface alignment:
<code>
dynamic script = CSScript.RoslynEvaluator
.LoadFile("calc.cs");
int result = script.Sum(1, 2);
</code>
</example>/// <param name="scriptFile">The C# script file.</param>
<returns>Instance of the class defined in the script file.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.LoadFile``1(System.String)">
<summary>
Evaluates and loads C# code from the specified file to the current AppDomain. Returns instance of the first
class defined in the script file.
After initializing the class instance it is aligned to the interface specified by the parameter <c>T</c>.
<para><c>Note:</c> the script class does not have to inherit from the <c>T</c> parameter as the proxy type
will be generated anyway.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
public interface ICalc
{
int Sum(int a, int b);
}
....
ICalc calc = CSScript.Evaluator
.LoadFile&lt;ICalc&gt;("calc.cs");
int result = calc.Sum(1, 2);
</code>
</example>
<typeparam name="T">The type of the interface type the script class instance should be aligned to.</typeparam>
<param name="scriptFile">The C# script text.</param>
<returns>Aligned to the <c>T</c> interface instance of the class defined in the script file.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.LoadMethod(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads
the class to the current AppDomain.
</summary>
<example>The following is the simple example of the LoadMethod usage:
<code>
dynamic script = CSScript.RoslynEvaluator
.LoadMethod(@"int Product(int a, int b)
{
return a * b;
}");
int result = script.Product(3, 2);
</code>
</example>
<param name="code">The C# script text.</param>
<returns>Instance of the first class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.LoadMethod``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads
the class to the current AppDomain.
<para>
After initializing the class instance it is aligned to the interface specified by the parameter <c>T</c>.
</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
public interface ICalc
{
int Sum(int a, int b);
int Div(int a, int b);
}
....
ICalc script = CSScript.RoslynEvaluator
.LoadMethod&lt;ICalc&gt;(@"public int Sum(int a, int b)
{
return a + b;
}
public int Div(int a, int b)
{
return a/b;
}");
int result = script.Div(15, 3);
</code>
</example>
<typeparam name="T">The type of the interface type the script class instance should be aligned to.</typeparam>
<param name="code">The C# script text.</param>
<returns>Aligned to the <c>T</c> interface instance of the auto-generated class defined in the script.</returns>
</member>
<member name="P:CSScriptLibrary.RoslynEvaluator.DisableReferencingFromCode">
<summary>
Gets or sets the flag indicating if the script code should be analyzed and the assemblies
that the script depend on (via '//css_...' and 'using ...' directives) should be referenced.
</summary>
<value></value>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.ReferenceAssembliesFromCode(System.String,System.String[])">
<summary>
References the assemblies from the script code.
<para>The method analyses and tries to resolve CS-Script directives (e.g. '//css_ref') and 'used' namespaces based on the
optional search directories.</para>
</summary>
<param name="code">The script code.</param>
<param name="searchDirs">The assembly search/probing directories.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.ReferenceAssembly(System.String)">
<summary>
References the given assembly by the assembly path.
<para>It is safe to call this method multiple times for the same assembly. If the assembly already referenced it will not
be referenced again.</para>
</summary>
<param name="assembly">The path to the assembly file.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.ReferenceAssembly(System.Reflection.Assembly)">
<summary>
References the given assembly.
<para>It is safe to call this method multiple times
for the same assembly. If the assembly already referenced it will not
be referenced again.
</para>
</summary>
<param name="assembly">The assembly instance.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.ReferenceAssemblyByName(System.String)">
<summary>
References the name of the assembly by its partial name.
<para>Note that the referenced assembly will be loaded into the host AppDomain in order to resolve assembly partial name.</para>
<para>It is an equivalent of <c>Evaluator.ReferenceAssembly(Assembly.LoadWithPartialName(assemblyPartialName))</c></para>
</summary>
<param name="assemblyPartialName">Partial name of the assembly.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.TryReferenceAssemblyByNamespace(System.String,System.Boolean@)">
<summary>
References the assembly by the given namespace it implements.
</summary>
<param name="namespace">The namespace.</param>
<param name="resolved">Set to <c>true</c> if the namespace was successfully resolved (found) and
the reference was added; otherwise, <c>false</c>.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.ReferenceAssemblyByNamespace(System.String)">
<summary>
References the assembly by the given namespace it implements.
<para>Adds assembly reference if the namespace was successfully resolved (found) and, otherwise does nothing</para>
</summary>
<param name="namespace">The namespace.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.ReferenceAssemblyOf(System.Object)">
<summary>
References the assembly by the object, which belongs to this assembly.
<para>It is safe to call this method multiple times
for the same assembly. If the assembly already referenced it will not
be referenced again.
</para>
</summary>
<param name="obj">The object, which belongs to the assembly to be referenced.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.ReferenceAssemblyOf``1">
<summary>
References the assembly by the object, which belongs to this assembly.
<para>It is safe to call this method multiple times
for the same assembly. If the assembly already referenced it will not
be referenced again.
</para>
</summary>
<typeparam name="T">The type which is implemented in the assembly to be referenced.</typeparam>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.ReferenceDomainAssemblies(CSScriptLibrary.DomainAssemblies)">
<summary>
References the assemblies the are already loaded into the current <c>AppDomain</c>.
</summary>
<param name="assemblies">The type of assemblies to be referenced.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.RoslynEvaluator.Reset(System.Boolean)">
<summary>
Resets Evaluator.
<para>
Resetting means clearing all referenced assemblies, recreating evaluation infrastructure (e.g. compiler setting)
and reconnection to or recreation of the underlying compiling services.
</para>
<para>Optionally the default current AppDomain assemblies can be referenced automatically with
<paramref name="referenceDomainAssemblies"/>.</para>
</summary>
<param name="referenceDomainAssemblies">if set to <c>true</c> the default assemblies of the current AppDomain
will be referenced (see <see cref="M:CSScriptLibrary.RoslynEvaluator.ReferenceDomainAssemblies(CSScriptLibrary.DomainAssemblies)"/> method).
</param>
<returns>The freshly initialized instance of the <see cref="T:CSScriptLibrary.IEvaluator"/>.</returns>
</member>
<member name="T:CSScriptLibrary.IRemoteAgent">
<summary>
<para> Do not use as this interface as it's intended for use by CS-Script engine only. </para>
Interface that is used by CS-Script engine to build transparent proxies for EvaluatorRemoting extensions.
This interface has to be public as it is passed across assemblies.
</summary>
</member>
<member name="T:CSScriptLibrary.AttachedProperies">
<summary>
The extremely simple implementation of generic "Extension Properties".
Originally published on CodeProject: http://www.codeproject.com/Articles/399932/Extension-Properties-Revised
</summary>
</member>
<member name="M:CSScriptLibrary.AttachedProperies.SetValue``1(``0,System.String,System.Object)">
<summary>
Sets the named value to the object.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="obj">The object.</param>
<param name="name">The name of the value.</param>
<param name="value">The value.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.AttachedProperies.GetValue``1(System.Object,System.String)">
<summary>
Gets the named value of the object.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="obj">The object.</param>
<param name="name">The name of the value.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.AttachedProperies.GetValue(System.Object,System.String)">
<summary>
Gets the named value of the object.
</summary>
<param name="obj">The object.</param>
<param name="name">The name of the value.</param>
<returns></returns>
</member>
<member name="T:CSScriptLibrary.EvaluatorRemoting">
<summary>
Extension methods for invocation of <see cref="T:CSScriptLibrary.IEvaluator"/> methods in a remote AppDomain.
</summary>
</member>
<member name="M:CSScriptLibrary.EvaluatorRemoting.GetRemoteDomain(CSScriptLibrary.IEvaluator)">
<summary>
Gets the remote AppDomain associated with the evaluator.
The AppDomain is set to the Evaluator with the last call of
any EvaluatorRemoting extension methods.
</summary>
<param name="evaluator">The evaluator.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorRemoting.GetOwnerObject``1(System.Object)">
<summary>
Gets the owner/parent of the object. This method is used to access the
remote object owning the MethodDelegate returned to the caller AppDomain
with the EvaluatorRemoting extension methods.
</summary>
<typeparam name="T">The type of the .</typeparam>
<param name="obj">The object.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorRemoting.GetOwnerDomain(System.Object)">
<summary>
Gets the AppDomain owning the actual object the transparent proxy is associated with.
The AppDomain is set to the proxy object on any EvaluatorRemoting extension methods call.
</summary>
<param name="obj">The transparent proxy object.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorRemoting.UnloadOwnerDomain(System.Object)">
<summary>
Unloads the AppDomain owning the actual object that the transparent proxy is associated with.
</summary>
<param name="obj">The transparent proxy object.</param>
</member>
<member name="M:CSScriptLibrary.EvaluatorRemoting.LoadMethodRemotely``1(CSScriptLibrary.IEvaluator,System.String)">
<summary>
Loads the method remotely.
LoadMethodRemotely is essentially the same as <see cref="M:CSScriptLibrary.EvaluatorRemoting.LoadCodeRemotely``1(CSScriptLibrary.IEvaluator,System.String,System.String[])"/>.
It just deals not with the whole class definition but a method(s) only. And the rest of the class definition is
added automatically by CS-Script.
</summary>
<example>
<code>
var script = CSScript.Evaluator
.LoadMethodRemotely&lt;ICalc&gt;(
@"public int Sum(int a, int b)
{
return a+b;
}
public int Sub(int a, int b)
{
return a-b;
}");
int result = script.Sum(15, 3));
// after the next line call the remote domain with loaded script will be unloaded
script.UnloadOwnerDomain();
</code>
</example>
<typeparam name="T">The type of the T.</typeparam>
<param name="evaluator">The evaluator.</param>
<param name="code">The code.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorRemoting.LoadFileRemotely``1(CSScriptLibrary.IEvaluator,System.String)">
<summary>
Loads the script file remotely.
<para>This method is essentially identical to <see cref="M:CSScriptLibrary.EvaluatorRemoting.LoadCodeRemotely{T}"/>.
Except it loads the code not from the in-memory string but from the file.</para>
</summary>
<typeparam name="T">The interface type the remote object should be casted or aligned (duck-typed) to.</typeparam>
<param name="evaluator">The evaluator.</param>
<param name="scriptFile">The script file.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorRemoting.LoadCodeRemotely``1(CSScriptLibrary.IEvaluator,System.String,System.String[])">
<summary>
Loads/evaluates C# code into a remote AppDomain and returns a transparent proxy of the
instance of the first class defined in the code.
<para>The returned proxy can be used to unload the AppDomain owning the actual object
the proxy points to.</para>
</summary>
<remarks>
Note, the concrete type of the return value depends on the script class definition.
It the class implement interface then an ordinary type castes proxy object is returned.
However if the class doesn't implement the interface the a dynamically emitted duck-typed
proxy returned instead. Such proxy cannot be built for the types implemented in file-less
(in-memory) assemblies. Thus neither Mono nor Roslyn engines cannot be used with this
technique. Meaning that
<see cref="P:CSScriptLibrary.CSScript.CodeDomEvaluator"/> needs to be used.
<para>While the script class to be evaluated doesn't have to implement from 'T' interface but
it must inherit <see cref="T:System.MarshalByRefObject"/> though.</para>
</remarks>
<example>
<code>
// duck-typed proxy; must use CodeDomEvaluator
var script = CSScript.CodeDomEvaluator
.LoadCodeRemotely&lt;ICalc&gt;(
@"using System;
public class Calc : MarshalByRefObject
{
public int Sum(int a, int b)
{
return a + b;
}
}");
// ordinary type casted proxy
var script2 = CSScript.Evaluator
.LoadCodeRemotely&lt;ICalc&gt;(
@"using System;
public class Calc : MarshalByRefObject : ICalc
{
public int Sum(int a, int b)
{
return a + b;
}
}");
int result = script.Sum(15, 3);
// after the next line call the remote domain with loaded script will be unloaded
script.UnloadOwnerDomain();
</code>
</example>
<typeparam name="T">The interface type the remote object should be casted or aligned (duck-typed) to.</typeparam>
<param name="evaluator">The evaluator.</param>
<param name="scriptCode">The script code that defines the script class to be loaded.
<para>The script class doesn't have to implement from 'T' interface but
it must inherit <see cref="T:System.MarshalByRefObject"/> though.</para>
</param>
<param name="probingDirs">The probing directories for the assemblies the script
assembly depends on.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorRemoting.CreateDelegateRemotely(CSScriptLibrary.IEvaluator,System.String,System.String[])">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>),
evaluates it and loads the class to the remote AppDomain.
<para>Returns non-typed <see cref="T:CSScriptLibrary.MethodDelegate"/> of the remote object for
class-less style of invoking.</para>
</summary>
<example>
<code>
var log = CSScript.Evaluator
.CreateDelegateRemotely(
@"void Log(string message)
{
Console.WriteLine(message);
}");
log("Test message");
log.UnloadOwnerDomain();
</code>
</example>
<param name="evaluator">The evaluator.</param>
<param name="code">The C# code.</param>
<param name="probingDirs">The probing directories for the assemblies the script
assembly depends on.</param>
<returns> The instance of a 'duck typed' <see cref="T:CSScriptLibrary.MethodDelegate"/></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorRemoting.CreateDelegateRemotely``1(CSScriptLibrary.IEvaluator,System.String,System.String[])">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>) implementing interface T,
evaluates it and loads the class to the remote AppDomain.
<para>Returns typed <see cref="T:CSScriptLibrary.MethodDelegate`1"/> for class-less style of invoking.</para>
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<example>
<code>
var product = CSScript.Evaluator
.CreateDelegateRemotely&lt;int&gt;(
@"int Product(int a, int b)
{
return a * b;
}");
int result = product(3, 2);
product.UnloadOwnerDomain();
</code>
</example>
<param name="evaluator">The evaluator.</param>
<param name="code">The C# code.</param>
<param name="probingDirs">The probing directories for the assemblies the script
assembly depends on.</param>
<returns> The instance of a 'duck typed' <see cref="T:CSScriptLibrary.MethodDelegate"/></returns>
</member>
<member name="T:CSScriptLibrary.EvaluatorAsync">
<summary>
Extension methods for asynchronous invocation of <see cref="T:CSScriptLibrary.IEvaluator"/> methods
with Async and Await available in C# 5.
</summary>
</member>
<member name="M:CSScriptLibrary.EvaluatorAsync.CompileCodeAsync(CSScriptLibrary.IEvaluator,System.String)">
<summary>
Asynchronous version of <see cref="M:CSScriptLibrary.IEvaluator.CompileCode(System.String)"/>.
</summary>
<example>
<code>
async void button1_Click(object sender, EventArgs e)
{
Assembly script = await CSScript.Evaluator
.CompileCodeAsync(
@"using System;
public class Calc
{
public int Sum(int a, int b)
{
return a+b;
}
}");
dynamic calc = script.CreateObject("*");
textBox1.Text = calc.Sum(3, 2).ToString();
}
</code>
</example>
<param name="evaluator">The evaluator.</param>
<param name="scriptText">The C# code.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorAsync.CompileMethodAsync(CSScriptLibrary.IEvaluator,System.String)">
<summary>
Asynchronous version of <see cref="M:CSScriptLibrary.IEvaluator.CompileMethod(System.String)"/>.
</summary>
<example>
<code>
async void button1_Click(object sender, EventArgs e)
{
Assembly script = await CSScript.Evaluator
.CompileMethodAsync(
@"int Sum(int a, int b)
{
return a+b;
}");
dynamic calc = script.CreateObject("*");
textBox1.Text = calc.Sum(3, 7).ToString();
}
</code>
</example>
<param name="evaluator">The evaluator.</param>
<param name="code">The code.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorAsync.CreateDelegateAsync``1(CSScriptLibrary.IEvaluator,System.String)">
<summary>
Asynchronous version of <see cref="M:CSScriptLibrary.IEvaluator.CreateDelegate``1(System.String)"/>.
</summary>
<example>
<code>
async void button1_Click(object sender, EventArgs e)
{
var product = await CSScript.Evaluator
.CreateDelegateAsync&lt;int&gt;(
@"int Product(int a, int b)
{
return a * b;
}");
textBox1.Text = product(3, 2).ToString();
}
</code>
</example>
<param name="evaluator">The evaluator.</param>
<param name="code">The C# script text.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorAsync.CreateDelegateAsync(CSScriptLibrary.IEvaluator,System.String)">
<summary>
Asynchronous version of <see cref="M:CSScriptLibrary.IEvaluator.CreateDelegate(System.String)"/>.
</summary>
<example>
<code>
async void button1_Click(object sender, EventArgs e)
{
var log = await CSScript.Evaluator
.CreateDelegateAsync(
@"void Log(string message)
{
Console.WriteLine(message);
}");
log("Test message");
}
</code>
</example>
<param name="evaluator">The evaluator.</param>
<param name="code">The C# script text.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorAsync.LoadCodeAsync(CSScriptLibrary.IEvaluator,System.String,System.Object[])">
<summary>
Asynchronous version of <see cref="M:CSScriptLibrary.IEvaluator.LoadCode(System.String,System.Object[])"/>.
</summary>
<example>
<code>
async void button1_Click(object sender, EventArgs e)
{
dynamic calc = await CSScript.Evaluator
.LoadCodeAsync(
@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
textBox1.Text = calc.Sum(1, 2).ToString();
}
</code>
</example>
<param name="evaluator">The evaluator.</param>
<param name="scriptText">The C# script text.</param>
<param name="args">The non default type <c>T</c> constructor arguments.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorAsync.LoadCodeAsync``1(CSScriptLibrary.IEvaluator,System.String,System.Object[])">
<summary>
Asynchronous version of <see cref="M:CSScriptLibrary.IEvaluator.LoadCode``1(System.String,System.Object[])"/>.
</summary>
<example>
<code>
async void button1_Click(object sender, EventArgs e)
{
ICalc calc = await CSScript.Evaluator
.LoadCodeAsync&lt;ICalc&gt;(
@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
textBox1.Text = calc.Sum(1, 2).ToString();
}
</code>
</example>
<typeparam name="T">The type of the interface type the script class instance should be aligned to.</typeparam>
<param name="evaluator">The evaluator.</param>
<param name="scriptText">The C# script text.</param>
<param name="args">The non default type <c>T</c> constructor arguments.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorAsync.LoadFileAsync``1(CSScriptLibrary.IEvaluator,System.String)">
<summary>
Asynchronous version of <see cref="M:CSScriptLibrary.IEvaluator.LoadFile``1(System.String)"/>.
</summary>
<example>
<code>
async void button1_Click(object sender, EventArgs e)
{
ICalc script = await CSScript.Evaluator
.LoadFileAsync&lt;ICalc&gt;("calc.cs");
textBox1.Text = script.Sum(1, 2).ToString();
}
</code>
</example>
<typeparam name="T">The type of the T.</typeparam>
<param name="evaluator">The evaluator.</param>
<param name="scriptFile">The C# script file.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorAsync.LoadFileAsync(CSScriptLibrary.IEvaluator,System.String)">
<summary>
Asynchronous version of <see cref="M:CSScriptLibrary.IEvaluator.LoadFile(System.String)"/>.
</summary>
<example>
<code>
async void button1_Click(object sender, EventArgs e)
{
dynamic script = await CSScript.Evaluator
.LoadFileAsync("calc.cs");
textBox1.Text = script.Sum(1, 2).ToString();
}
</code>
</example>
<param name="evaluator">The evaluator.</param>
<param name="scriptFile">The C# script file.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorAsync.LoadMethodAsync(CSScriptLibrary.IEvaluator,System.String)">
<summary>
Asynchronous version of <see cref="M:CSScriptLibrary.IEvaluator.LoadMethod(System.String)"/>.
</summary>
<example><code>
async void button1_Click(object sender, EventArgs e)
{
ICalc script = await CSScript.Evaluator
.LoadMethodAsync&lt;ICalc&gt;(
@"public int Sum(int a, int b)
{
return a + b;
}
public int Div(int a, int b)
{
return a/b;
}");
textBox1.Text = script.Div(15, 3).ToString();
}
</code></example>
<param name="evaluator">The evaluator.</param>
<param name="code">The code.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorAsync.LoadMethodAsync``1(CSScriptLibrary.IEvaluator,System.String)">
<summary>
Asynchronous version of <see cref="M:CSScriptLibrary.IEvaluator.LoadMethod``1(System.String)"/>.
</summary>
<example><code>
async void button1_Click(object sender, EventArgs e)
{
ICalc script = await CSScript.Evaluator
.LoadMethodAsync&lt;ICalc&gt;(
@"public int Sum(int a, int b)
{
return a + b;
}
public int Div(int a, int b)
{
return a/b;
}");
textBox1.Text = script.Div(15, 3).ToString();
}
</code></example>
<typeparam name="T">The type of the T.</typeparam>
<param name="evaluator">The evaluator.</param>
<param name="code">The code.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.EvaluatorAsync.LoadDelegateAsync``1(CSScriptLibrary.IEvaluator,System.String)">
<summary>
Asynchronous version of <see cref="M:CSScriptLibrary.IEvaluator.LoadDelegate``1(System.String)"/>.
</summary>
<example>
<code>
async void button1_Click(object sender, EventArgs e)
{
var product = await CSScript.Evaluator
.LoadDelegateAsync&lt;Func&lt;int, int, int&gt;&gt;(
@"int Product(int a, int b)
{
return a * b;
}");
textBox1.Text = product(3, 2).ToString();
}
</code>
</example>
<typeparam name="T">The type of the T.</typeparam>
<param name="evaluator">The evaluator.</param>
<param name="code">The code.</param>
<returns></returns>
</member>
<member name="T:CSScriptLibrary.DomainAssemblies">
<summary>
Type of the assemblies to be loaded/referenced.
</summary>
</member>
<member name="F:CSScriptLibrary.DomainAssemblies.None">
<summary>
No assemblies
</summary>
</member>
<member name="F:CSScriptLibrary.DomainAssemblies.AllStatic">
<summary>
All static current AppDomain assemblies
</summary>
</member>
<member name="F:CSScriptLibrary.DomainAssemblies.AllStaticNonGAC">
<summary>
All static and non-GAC current AppDomain assemblies
</summary>
</member>
<member name="F:CSScriptLibrary.DomainAssemblies.All">
<summary>
All current AppDomain assemblies
</summary>
</member>
<member name="T:CSScriptLibrary.EvaluatorEngine">
<summary>
Type of the evaluator engine.
<para>This enum is used to control type of compiler the generic
CSScript.<see cref="P:CSScriptLibrary.CSScript.Evaluator"/> encapsulates.</para>
</summary>
</member>
<member name="F:CSScriptLibrary.EvaluatorEngine.Roslyn">
<summary>
Roslyn compilation services
</summary>
</member>
<member name="F:CSScriptLibrary.EvaluatorEngine.Mono">
<summary>
Mono compilation services
</summary>
</member>
<member name="F:CSScriptLibrary.EvaluatorEngine.CodeDom">
<summary>
CodeDom compilation infrastructure
</summary>
</member>
<member name="T:CSScriptLibrary.EvaluatorAccess">
<summary>
Runtime instantiation model for CS-Script evaluators (e.g CSScript.<see cref="P:CSScriptLibrary.CSScript.Evaluator"/>).
</summary>
</member>
<member name="F:CSScriptLibrary.EvaluatorAccess.Singleton">
<summary>
Every time the member variable is accessed the same static object is returned.
</summary>
</member>
<member name="F:CSScriptLibrary.EvaluatorAccess.AlwaysCreate">
<summary>
Every time the member variable is accessed a new object is created.
</summary>
</member>
<member name="T:CSScriptLibrary.EvaluatorConfig">
<summary>
Class that contains configuration options for controlling dynamic code evaluation with CSScript.<see cref="P:CSScriptLibrary.CSScript.Evaluator"/>.
</summary>
</member>
<member name="P:CSScriptLibrary.EvaluatorConfig.Access">
<summary>
Gets or sets the default access type for CS-Script evaluators.
<para>This property controls the how the generic
CS-Script evaluators are instantiated when accessed (e.g.
CSScript.<see cref="P:CSScriptLibrary.CSScript.Evaluator"/> or ).
</para>
</summary>
<value>The access.</value>
</member>
<member name="P:CSScriptLibrary.EvaluatorConfig.DebugBuild">
<summary>
Default value of the <see cref="T:CSScriptLibrary.IEvaluator"/>.DebugBuild property controlling the generation of the debug symbols.
</summary>
</member>
<member name="P:CSScriptLibrary.EvaluatorConfig.RefernceDomainAsemblies">
<summary>
Flag that controls if the host AppDo,main referenced assemblies are automatically referenced at creation
of <see cref="T:CSScriptLibrary.IEvaluator"/>.
</summary>
</member>
<member name="P:CSScriptLibrary.EvaluatorConfig.Engine">
<summary>
Gets or sets the default evaluator engine type.
<para>This property controls the type of compiler the generic
CSScript.<see cref="P:CSScriptLibrary.CSScript.Evaluator"/> encapsulates.</para>
</summary>
<value>The default evaluator engine.</value>
</member>
<member name="T:CSScriptLibrary.IEvaluator">
<summary>
A generic interface of the CS-Script evaluator. It encapsulates the generic functionality of the evaluator regardless
of the nature of the underlying compiling services (e.g. Mono, Roslyn, CodeDom).
</summary>
</member>
<member name="P:CSScriptLibrary.IEvaluator.DebugBuild">
<summary>
Gets or sets a value indicating whether to compile script with debug symbols.
<para>Note, affect of setting <c>DebugBuild</c> will always depend on the compiler implementation:
<list type="bullet">
<item><term>CodeDom</term><description>Fully supports. Generates debugging symbols (script can be debugged) and defines <c>DEBUG</c> and <c>TRACE</c> conditional symbols</description> </item>
<item><term>Mono</term><description>Partially supports. Defines <c>DEBUG</c> and <c>TRACE</c> conditional symbols</description> </item>
<item><term>Roslyn</term><description>Doesn't supports at all.</description> </item>
</list>
</para>
</summary>
<value><c>true</c> if 'debug build'; otherwise, <c>false</c>.</value>
</member>
<member name="P:CSScriptLibrary.IEvaluator.DisableReferencingFromCode">
<summary>
Gets or sets the flag indicating if the script code should be analyzed and the assemblies
that the script depend on (via '//css_...' and 'using ...' directives) should be referenced.
</summary>
<value></value>
</member>
<member name="M:CSScriptLibrary.IEvaluator.CompileCode(System.String)">
<summary>
Evaluates (compiles) C# code (script). The C# code is a typical C# code containing a single or multiple class definition(s).
</summary>
<example>
<code>
Assembly asm = CSScript.Evaluator
.CompileCode(@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
dynamic script = asm.CreateObject("*");
var result = script.Sum(7, 3);
</code>
</example>
<param name="scriptText">The C# script text.</param>
<returns>The compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.CompileMethod(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>) and evaluates it.
<para>
This method is a logical equivalent of <see cref="M:CSScriptLibrary.IEvaluator.CompileCode(System.String)"/> but is allows you to define
your script class by specifying class method instead of whole class declaration.</para>
</summary>
<example>
<code>
dynamic script = CSScript.Evaluator
.CompileCode(@"int Sum(int a, int b)
{
return a+b;
}")
.CreateObject("*");
var result = script.Sum(7, 3);
</code>
</example>
<param name="code">The C# code.</param>
<returns>The compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.CreateDelegate(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns non-typed <see cref="T:CSScriptLibrary.MethodDelegate"/> for class-less style of invoking.</para>
</summary>
<example>
<code>
var log = CSScript.Evaluator
.CreateDelegate(@"void Log(string message)
{
Console.WriteLine(message);
}");
log("Test message");
</code>
</example>
<param name="code">The C# code.</param>
<returns> The instance of a 'duck typed' <see cref="T:CSScriptLibrary.MethodDelegate"/></returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.CreateDelegate``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns typed <see cref="T:CSScriptLibrary.MethodDelegate`1"/> for class-less style of invoking.</para>
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<example>
<code>
var product = CSScript.Evaluator
.CreateDelegate&lt;int&gt;(@"int Product(int a, int b)
{
return a * b;
}");
int result = product(3, 2);
</code>
</example>
<param name="code">The C# code.</param>
<returns> The instance of a typed <see cref="T:CSScriptLibrary.MethodDelegate`1"/></returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.GetReferencedAssemblies(System.String,System.String[])">
<summary>
Analyses the script code and returns set of locations for the assemblies referenced from the code with CS-Script directives (//css_ref).
</summary>
<param name="code">The script code.</param>
<param name="searchDirs">The assembly search/probing directories.</param>
<returns>Array of the referenced assemblies</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.GetReferencedAssemblies">
<summary>
Returns set of referenced assemblies.
<para>
Notre: the set of assemblies is cleared on Reset.
</para>
</summary>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.LoadCode(System.String,System.Object[])">
<summary>
Evaluates and loads C# code to the current AppDomain. Returns instance of the first class defined in the code.
</summary>
<example>The following is the simple example of the LoadCode usage:
<code>
dynamic script = CSScript.Evaluator
.LoadCode(@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
int result = script.Sum(1, 2);
</code>
</example>
<param name="scriptText">The C# script text.</param>
<param name="args">The non default constructor arguments.</param>
<returns>Instance of the class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.LoadCode``1(System.String,System.Object[])">
<summary>
Evaluates and loads C# code to the current AppDomain. Returns instance of the first class defined in the code.
After initializing the class instance it is aligned to the interface specified by the parameter <c>T</c>.
<para><c>Note:</c> Because the interface alignment is a duck typing implementation the script class doesn't have to
inherit from <c>T</c>.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
public interface ICalc
{
int Sum(int a, int b);
}
....
ICalc calc = CSScript.Evaluator
.LoadCode&lt;ICalc&gt;(@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
int result = calc.Sum(1, 2);
</code>
</example>
<typeparam name="T">The type of the interface type the script class instance should be aligned to.</typeparam>
<param name="scriptText">The C# script text.</param>
<param name="args">The non default type <c>T</c> constructor arguments.</param>
<returns>Aligned to the <c>T</c> interface instance of the class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.LoadDelegate``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads
the class to the current AppDomain.
<para>Returns instance of <c>T</c> delegate for the first method in the auto-generated class.</para>
</summary>
<example>
<code>
var Product = CSScript.Evaluator
.LoadDelegate&lt;Func&lt;int, int, int&gt;&gt;(
@"int Product(int a, int b)
{
return a * b;
}");
int result = Product(3, 2);
</code>
</example>
<param name="code">The C# code.</param>
<returns>Instance of <c>T</c> delegate.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.LoadFile(System.String)">
<summary>
Evaluates and loads C# code from the specified file to the current AppDomain. Returns instance of the first
class defined in the script file.
</summary>
<example>The following is the simple example of the interface alignment:
<code>
dynamic script = CSScript.Evaluator
.LoadFile("calc.cs");
int result = script.Sum(1, 2);
</code>
</example>/// <param name="scriptFile">The C# script file.</param>
<returns>Instance of the class defined in the script file.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.LoadFile``1(System.String)">
<summary>
Evaluates and loads C# code from the specified file to the current AppDomain. Returns instance of the first
class defined in the script file.
After initializing the class instance it is aligned to the interface specified by the parameter <c>T</c>.
<para><c>Note:</c> the script class does not have to inherit from the <c>T</c> parameter as the proxy type
will be generated anyway.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
public interface ICalc
{
int Sum(int a, int b);
}
....
ICalc calc = CSScript.Evaluator
.LoadFile&lt;ICalc&gt;("calc.cs");
int result = calc.Sum(1, 2);
</code>
</example>
<typeparam name="T">The type of the interface type the script class instance should be aligned to.</typeparam>
<param name="scriptFile">The C# script text.</param>
<returns>Aligned to the <c>T</c> interface instance of the class defined in the script file.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.LoadMethod(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads
the class to the current AppDomain.
</summary>
<example>The following is the simple example of the LoadMethod usage:
<code>
dynamic script = CSScript.Evaluator
.LoadMethod(@"int Product(int a, int b)
{
return a * b;
}");
int result = script.Product(3, 2);
</code>
</example>
<param name="code">The C# script text.</param>
<returns>Instance of the first class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.LoadMethod``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads
the class to the current AppDomain.
<para>
After initializing the class instance it is aligned to the interface specified by the parameter <c>T</c>.
</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
public interface ICalc
{
int Sum(int a, int b);
int Div(int a, int b);
}
....
ICalc script = CSScript.Evaluator
.LoadMethod&lt;ICalc&gt;(@"public int Sum(int a, int b)
{
return a + b;
}
public int Div(int a, int b)
{
return a/b;
}");
int result = script.Div(15, 3);
</code>
</example>
<typeparam name="T">The type of the interface type the script class instance should be aligned to.</typeparam>
<param name="code">The C# script text.</param>
<returns>Aligned to the <c>T</c> interface instance of the auto-generated class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.ReferenceAssembliesFromCode(System.String,System.String[])">
<summary>
References the assemblies from the script code.
<para>The method analyses and tries to resolve CS-Script directives (e.g. '//css_ref') and 'used' namespaces based on the
optional search directories.</para>
</summary>
<param name="code">The script code.</param>
<param name="searchDirs">The assembly search/probing directories.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.ReferenceAssembly(System.String)">
<summary>
References the given assembly by the assembly path.
<para>It is safe to call this method multiple times for the same assembly. If the assembly already referenced it will not
be referenced again.</para>
</summary>
<param name="assembly">The path to the assembly file.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.ReferenceAssembly(System.Reflection.Assembly)">
<summary>
References the given assembly.
<para>It is safe to call this method multiple times
for the same assembly. If the assembly already referenced it will not
be referenced again.
</para>
</summary>
<param name="assembly">The assembly instance.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.ReferenceAssemblyByName(System.String)">
<summary>
References the name of the assembly by its partial name.
<para>Note that the referenced assembly will be loaded into the host AppDomain in order to resolve assembly partial name.</para>
<para>It is an equivalent of <c>Evaluator.ReferenceAssembly(Assembly.LoadWithPartialName(assemblyPartialName))</c></para>
</summary>
<param name="assemblyPartialName">Partial name of the assembly.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.TryReferenceAssemblyByNamespace(System.String,System.Boolean@)">
<summary>
References the assembly by the given namespace it implements.
</summary>
<param name="namespace">The namespace.</param>
<param name="resolved">Set to <c>true</c> if the namespace was successfully resolved (found) and
the reference was added; otherwise, <c>false</c>.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.ReferenceAssemblyByNamespace(System.String)">
<summary>
References the assembly by the given namespace it implements.
<para>Adds assembly reference if the namespace was successfully resolved (found) and, otherwise does nothing</para>
</summary>
<param name="namespace">The namespace.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.ReferenceAssemblyOf(System.Object)">
<summary>
References the assembly by the object, which belongs to this assembly.
<para>It is safe to call this method multiple times
for the same assembly. If the assembly already referenced it will not
be referenced again.
</para>
</summary>
<param name="obj">The object, which belongs to the assembly to be referenced.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.ReferenceAssemblyOf``1">
<summary>
References the assembly by the object, which belongs to this assembly.
<para>It is safe to call this method multiple times
for the same assembly. If the assembly already referenced it will not
be referenced again.
</para>
</summary>
<typeparam name="T">The type which is implemented in the assembly to be referenced.</typeparam>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.ReferenceDomainAssemblies(CSScriptLibrary.DomainAssemblies)">
<summary>
References the assemblies the are already loaded into the current <c>AppDomain</c>.
</summary>
<param name="assemblies">The type of assemblies to be referenced.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.Reset(System.Boolean)">
<summary>
Resets Evaluator.
<para>
Resetting means clearing all referenced assemblies, recreating evaluation infrastructure (e.g. compiler setting)
and reconnection to or recreation of the underlying compiling services.
</para>
<para>Optionally the default current AppDomain assemblies can be referenced automatically with
<paramref name="referenceDomainAssemblies"/>.</para>
</summary>
<param name="referenceDomainAssemblies">if set to <c>true</c> the default assemblies of the current AppDomain
will be referenced (see <see cref="M:CSScriptLibrary.IEvaluator.ReferenceDomainAssemblies(CSScriptLibrary.DomainAssemblies)"/> method).
</param>
<returns>The freshly initialized instance of the <see cref="T:CSScriptLibrary.IEvaluator"/>.</returns>
</member>
<member name="M:CSScriptLibrary.IEvaluator.Clone(System.Boolean)">
<summary>
Clones the parent <see cref="T:CSScriptLibrary.IEvaluator"/>.
<para>
This method returns a freshly initialized copy of the <see cref="T:CSScriptLibrary.IEvaluator"/>.
The cloning 'depth' can be controlled by the <paramref name="copyRefAssemblies"/>.
</para>
<para>
This method is a convenient technique when multiple <see cref="T:CSScriptLibrary.IEvaluator"/> instances
are required (e.g. for concurrent script evaluation).
</para>
</summary>
<param name="copyRefAssemblies">if set to <c>true</c> all referenced assemblies from the parent <see cref="T:CSScriptLibrary.IEvaluator"/>
will be referenced in the cloned copy.</param>
<returns>The freshly initialized instance of the <see cref="T:CSScriptLibrary.IEvaluator"/>.</returns>
<example>
<code>
var eval1 = CSScript.Evaluator.Clone();
var eval2 = CSScript.Evaluator.Clone();
var sub = eval1.LoadDelegate&lt;Func&lt;int, int, int&gt;&gt;(
@"int Sub(int a, int b) {
return a - b;
}");
var sum = eval2.LoadDelegate&lt;Func&lt;int, int, int&gt;&gt;(
@"int Sub(int a, int b) {
return a + b;
}");
var result = sum(7, sub(4,2));
</code>
</example>
</member>
<member name="T:CSScriptLibrary.HostingConcurrencyControl">
<summary>
Enum for controlling concurrency in script hosting scenarios
</summary>
</member>
<member name="F:CSScriptLibrary.HostingConcurrencyControl.ProcessScope">
<summary>
Any call to CSScript.Compile within a given process is synchronized
</summary>
</member>
<member name="F:CSScriptLibrary.HostingConcurrencyControl.ScriptProcessScope">
<summary>
Any call to CSScript.Compile a specific script within a given process is synchronized
</summary>
</member>
<member name="F:CSScriptLibrary.HostingConcurrencyControl.ScriptSystemScope">
<summary>
Any call to CSScript.Compile a specific script is synchronized system wide
</summary>
</member>
<member name="T:CSScriptLibrary.Ref`1">
<summary>
This class encapsulates another object for the purpose of passing it to the anonymous methods as parameters.
<para>This lass helps to overcome the problem when <c>struct</c> or <c>immutable</c> types cannot be passed to the
anonymous methods with the <c>ref</c> modifier.</para>
<example>The following is the example of the updating the local variable of a value type from the anonymous method:
<code>
var count = new Ref&lt;int&gt;(1);
Action&lt;Ref&lt;int&gt;&gt; increment =
arg =>
{
arg.Value += 1;
};
increment(count);
</code>
</example>
</summary>
<typeparam name="T">Type of the encapsulated object.</typeparam>
</member>
<member name="M:CSScriptLibrary.Ref`1.#ctor(`0)">
<summary>
Initializes a new instance of the <see cref="T:CSScriptLibrary.Ref`1"/> class.
</summary>
<param name="value">The object to be encapsulated.</param>
</member>
<member name="P:CSScriptLibrary.Ref`1.Value">
<summary>
Gets or sets the value of the encapsulated object.
</summary>
<value>
The value.
</value>
</member>
<member name="M:CSScriptLibrary.Ref`1.ToString">
<summary>
Returns a <see cref="T:System.String"/> that represents encapsulated object.
</summary>
<returns>
A <see cref="T:System.String"/> that represents encapsulated object.
</returns>
</member>
<member name="T:CSScriptLibrary.SimpleAsmProbing">
<summary>
Class for automated assembly probing. It implments extremely simple ('optimistic')
probing algorithm. At runtime it attempts to resolve the assemblies via AppDomain.Assembly resolve
event by looking up the assembly files in the user dfined list of probing direcctories.
The algorithm relies on the simple relationship between assembluy name and assembly file name:
&lt;assembly file&gt; = &lt;asm name&gt; + ".dll"
</summary>
<example>The following is an example of automated assembly probing.
<code>
using (SimpleAsmProbing.For(@"E:\Dev\Libs", @"E:\Dev\Packages"))
{
dynamic script = CSScript.Load(script_file)
.CreateObject("Script");
script.Print();
}
</code>
</example>
<seealso cref="T:System.IDisposable" />
</member>
<member name="M:CSScriptLibrary.SimpleAsmProbing.Dispose">
<summary>
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
</summary>
</member>
<member name="M:CSScriptLibrary.SimpleAsmProbing.Dispose(System.Boolean)">
<summary>
Releases unmanaged and - optionally - managed resources.
</summary>
<param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
</member>
<member name="M:CSScriptLibrary.SimpleAsmProbing.Finalize">
<summary>
Finalizes an instance of the <see cref="T:CSScriptLibrary.SimpleAsmProbing"/> class.
</summary>
</member>
<member name="M:CSScriptLibrary.SimpleAsmProbing.#ctor">
<summary>
Initializes a new instance of the <see cref="T:CSScriptLibrary.SimpleAsmProbing"/> class.
</summary>
</member>
<member name="M:CSScriptLibrary.SimpleAsmProbing.For(System.String[])">
<summary>
Creates and initializes a new instance of the <see cref="T:CSScriptLibrary.SimpleAsmProbing"/> class.
</summary>
<param name="probingDirs">The probing dirs.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.SimpleAsmProbing.#ctor(System.String[])">
<summary>
Initializes a new instance of the <see cref="T:CSScriptLibrary.SimpleAsmProbing"/> class.
</summary>
<param name="probingDirs">The probing dirs.</param>
</member>
<member name="M:CSScriptLibrary.SimpleAsmProbing.Init(System.String[])">
<summary>
Sets probing dirs and subscribes to the <see cref="E:System.AppDomain.AssemblyResolve"/> event.
</summary>
<param name="probingDirs">The probing dirs.</param>
</member>
<member name="M:CSScriptLibrary.SimpleAsmProbing.Uninit">
<summary>
Unsubscribes to the <see cref="E:System.AppDomain.AssemblyResolve"/> event.
</summary>
</member>
<member name="T:CSScriptLibrary.AppDomainHelper">
<summary>
Simple helper class for extending functionality of <see cref="T:System.AppDomain" />.
<para>
This class mainly consist of the extension methods for <see cref="T:System.AppDomain" /> and it is to be used for executing the arbitrary
code routines in the separate (temporary) <see cref="T:System.AppDomain" /> with the optional unloading.
</para>This class is particularly useful for executing the CS-Script script in the separate <see cref="T:System.AppDomain" /> as this is the
only way to unload the script assembly after the execution (known .NET limitation).
<para>
<example>The following are the examples of the execution CS-Script scripts and unloading them after the execution:
<code>
AppDomain.CurrentDomain
.Clone()
.Execute(Job)
.Unload();
...
void Job()
{
var script = CSScript.LoadMethod("some C# script code")
.GetStaticMethod();
script();
};
</code>
<code>
AppDomain remote = AppDomain.CurrentDomain.Clone();
remote.Execute(() =&gt;
{
var Sum = CSScript.BuildEval(@"func(float a, float b) {
return a + b;
}");
var Average = CSScript.BuildEval(@"func(float a, float b) {
return (a + b)/2;
}");
Console.WriteLine("Sum = {0}\nAverage={1}", Sum(1f, 2f), Average(1f, 2f));
});
remote.Unload();
</code>
</example>
</para>
<remarks>
The functionality of this class is very similar to the <see cref="T:CSScriptLibrary.AsmHelper" />, which also allows executing and unloading the script(s).
However <see cref="T:CSScriptLibrary.AppDomainHelper" /> is designed as a generic class and as such it is more suitable for executing a "job" routines instead of individual scripts.
<para>
This creates some attractive opportunities for grouping scripting routines in a single <see cref="T:CSScriptLibrary.AsmHelper" />, which allows simple calling conventions (e.g. <c>CSScript.Load()</c>
instead of <c>CSScript.Compile()</c>) lighter type system (e.g. no need for MarshalByRefObject inheritance).
</para>
</remarks>
</summary>
</member>
<member name="M:CSScriptLibrary.AppDomainHelper.Execute(System.AppDomain,System.Action,System.String[])">
<summary>
Executes the <see cref="T:System.Action"/> delegate in the specified <see cref="T:System.AppDomain"/>.
<example>The following are the examples of the execution CS-Script scripts and unloading them after the execution:
<code>
var remoteDomain = AppDomain.CurrentDomain.Clone();
remoteDomain.Execute(Job)
remoteDomain.Unload();
...
void Job()
{
var script = CSScript.LoadMethod("some C# script code")
.GetStaticMethod();
script();
}
</code>
</example>
</summary>
<param name="domain">The <see cref="T:System.AppDomain"/> the delegate should be executed in.</param>
<param name="action">The delegate.</param>
<param name="probingDirs">The assembly probing directories of the AppDomain.</param>
<returns>Reference to the <see cref="T:System.AppDomain"/>. It is the same object, which is passed as the <paramref name="domain"/>.</returns>
</member>
<member name="M:CSScriptLibrary.AppDomainHelper.Execute``1(System.AppDomain,System.Action{``0},``0,System.String[])">
<summary>
Executes the <see cref="T:System.Action"/> delegate in the specified <see cref="T:System.AppDomain"/>.
<para>This method is allows you to pass the execution context parameter of the <c>T</c> type. Note <c>T</c> type must be serializable or inherited from
<c>MarshalByRefObject</c>.</para>
<para>This technique allows using AppDomain-neutral anonymous methods, which do not directly reference any variables from the primary
<c>AddDomain</c> and yet allow interacting with this domain through the context parameter.</para>
<example>The following is the example of the updating the primary AppDomain local variable <c>foo</c> from the routine executed in the remote domain:
<code>
var foo = new Ref&lt;string&gt;("foo");
AppDomain.CurrentDomain
.Clone()
.Execute(context =&gt;
{
context.Value = "FOO";
},
context:foo)
.Unload();
</code>
Note that the example is using <see cref="T:CSScriptLibrary.Ref`1"/> type to to allow custom boxing. This is because the anonymous methods do not allow ref/out parameter modifiers.
</example>
</summary>
<typeparam name="T"></typeparam>
<param name="domain">The <see cref="T:System.AppDomain"/> the delegate should be executed in.</param>
<param name="action">The delegate.</param>
<param name="context">The context data. Note the type of this parameter must be either <c>serializable</c> or inherited from <c>MarshalByRefObject </c> .</param>
<param name="probingDirs">The assembly probing directories of the AppDomain.</param>
<returns>Reference to the <see cref="T:System.AppDomain"/>. It is the same object, which is passed as the <paramref name="domain"/>.</returns>
</member>
<member name="M:CSScriptLibrary.AppDomainHelper.ExecuteAndUnload(System.Action)">
<summary>
<para>Executes the delegate in the temporary <see cref="T:System.AppDomain"/> with the following unloading of this domain.
</para>
<example>The following code the complete equivalent implementation of the <c>ExecuteAndUnload</c>:
<code>
AppDomain.CurrentDomain
.Clone()
.Execute(action)
.Unload();
</code>
</example>
</summary>
<param name="action">The delegate to be executed.</param>
</member>
<member name="M:CSScriptLibrary.AppDomainHelper.Unload(System.AppDomain)">
<summary>
Unloads the specified <see cref="T:System.AppDomain"/>.
</summary>
<param name="domain">The <see cref="T:System.AppDomain"/> to be unloaded.</param>
</member>
<member name="M:CSScriptLibrary.AppDomainHelper.Clone(System.AppDomain)">
<summary>
Clones the specified <see cref="T:System.AppDomain"/>. The mandatory "creation" properties of the <paramref name="domain"/> are used to create the new instance of <see cref="T:System.AppDomain"/>.
<para>The "friendly name" of the cloned <see cref="T:System.AppDomain"/> is a string representation of the random <c>GUID</c>.</para>
</summary>
<param name="domain">The <see cref="T:System.AppDomain"/> to be cloned.</param>
<returns>The newly created <see cref="T:System.AppDomain"/>.</returns>
</member>
<member name="M:CSScriptLibrary.AppDomainHelper.GetStrongName(System.Reflection.Assembly)">
<summary>
Gets the strong name of the assembly.
</summary>
<param name="assembly">The assembly.</param>
<returns>Assembly strong name.</returns>
</member>
<member name="M:CSScriptLibrary.AppDomainHelper.GetOriginalLocation(System.Reflection.Assembly)">
<summary>
Gets the original location of the script that the assemble been compiled from.
</summary>
<param name="assembly">The assembly.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.AppDomainHelper.GetDirName(System.String)">
<summary>
Gets the name of the directory from the specified path.
</summary>
<param name="path">The path.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.AppDomainHelper.Clone(System.AppDomain,System.String,System.Security.PermissionSet,System.Security.Policy.StrongName[])">
<summary>
Clones the specified <see cref="T:System.AppDomain"/>. The mandatory "creation" properties of the <paramref name="domain"/> are used to create the new instance of <see cref="T:System.AppDomain"/>.
<para>The <paramref name="name"/> parameter is used as the "friendly name" for the cloned <see cref="T:System.AppDomain"/>.</para>
</summary>
<param name="domain">The <see cref="T:System.AppDomain"/> to be cloned.</param>
<param name="name">The "friendly name" of the new <see cref="T:System.AppDomain"/> to be created.</param>
<param name="permissions">The permissions.</param>
<param name="fullyTrustedAssemblies">The fully trusted assemblies.</param>
<returns>The newly created <see cref="T:System.AppDomain"/>.</returns>
</member>
<member name="T:CSScriptLibrary.Sandbox">
<summary>
Simple security helper class. This class is nothing else but a syntactic sugar.
<para>
<example>The following is an example of execution under .NET sandbox:
<code>
Sandbox.With(SecurityPermissionFlag.Execution)
.Execute(() =>
{
//call sandboxed actions
});
</code>
</example>
</para>
</summary>
</member>
<member name="T:CSScriptLibrary.Sandbox.Action">
<summary>
Generic void/void delegate
</summary>
</member>
<member name="M:CSScriptLibrary.Sandbox.With``1(``0,System.Action{``0})">
<summary>
Extension method. To assist with Fluent API.
</summary>
<param name="obj">The object that is a subject of Fluent invocation.</param>
<param name="action">The action to be performed against object.</param>
</member>
<member name="M:CSScriptLibrary.Sandbox.Execute(System.Security.PermissionSet,CSScriptLibrary.Sandbox.Action)">
<summary>
Extension method. Executes <see cref="T:System.Action"/> with the specified array of permissions
</summary>
<param name="permissions">The permissions set to be used for the execution.</param>
<param name="action">The action to be executed.</param>
</member>
<member name="M:CSScriptLibrary.Sandbox.With(System.Security.IPermission[])">
<summary>
Returns the specified permissions as <see cref="T:System.Security.PermissionSet"/> to be used with <see cref="M:CSScriptLibrary.Sandbox.Execute(System.Security.PermissionSet,CSScriptLibrary.Sandbox.Action)"/>.
</summary>
<param name="permissions">The permissions.</param>
<returns><see cref="T:System.Security.PermissionSet"/> instance.</returns>
</member>
<member name="M:CSScriptLibrary.Sandbox.With(System.Security.Permissions.SecurityPermissionFlag)">
<summary>
Returns the specified permissions as <see cref="T:System.Security.PermissionSet"/> to be used with <see cref="М:csscript.Sandbox.Execute"/>.
</summary>
<param name="permissionsFlag">The permissions flag. Can be combination of multiple values.</param>
<returns><see cref="T:System.Security.PermissionSet"/> instance.</returns>
</member>
<member name="T:CSScriptLibrary.PrintDelegate">
<summary>
Delegate to handle output from script
</summary>
</member>
<member name="T:CSScriptLibrary.IsOutOfDateResolver">
<summary>
Delegate to determine if the script assembly is out of data and needs to be recompiled
</summary>
<param name="scriptSource">The script source.</param>
<param name="scriptAssembly">The script assembly.</param>
<returns>'true' if the script assembly is out of date.</returns>
</member>
<member name="T:CSScriptLibrary.BuildConfiguration">
<summary>
Type of the build (compile) configuration
</summary>
</member>
<member name="F:CSScriptLibrary.BuildConfiguration.Debug">
<summary>
The typical Debug build configuration
</summary>
</member>
<member name="F:CSScriptLibrary.BuildConfiguration.Release">
<summary>
The typical Release build configuration
</summary>
</member>
<member name="T:CSScriptLibrary.MonoEvaluator">
<summary>
A wrapper class that encapsulates the functionality of the Mono.CSharp.Evaluator.
</summary>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.Clone(System.Boolean)">
<summary>
Clones itself as <see cref="T:CSScriptLibrary.IEvaluator"/>.
<para>
This method returns a freshly initialized copy of the <see cref="T:CSScriptLibrary.IEvaluator"/>.
The cloning 'depth' can be controlled by the <paramref name="copyRefAssemblies"/>.
</para>
<para>
This method is a convenient technique when multiple <see cref="T:CSScriptLibrary.IEvaluator"/> instances
are required (e.g. for concurrent script evaluation).
</para>
</summary>
<param name="copyRefAssemblies">if set to <c>true</c> all referenced assemblies from the parent <see cref="T:CSScriptLibrary.IEvaluator"/>
will be referenced in the cloned copy.</param>
<returns>The freshly initialized instance of the <see cref="T:CSScriptLibrary.IEvaluator"/>.</returns>
<example>
<code>
var eval1 = CSScript.MonoEvaluator.Clone();
var eval2 = CSScript.MonoEvaluator.Clone();
var sub = eval1.LoadDelegate&lt;Func&lt;int, int, int&gt;&gt;(
@"int Sub(int a, int b) {
return a - b;
}");
var sum = eval2.LoadDelegate&lt;Func&lt;int, int, int&gt;&gt;(
@"int Sub(int a, int b) {
return a + b;
}");
var result = sum(7, sub(4,2));
</code>
</example>
</member>
<member name="P:CSScriptLibrary.MonoEvaluator.CompilerSettings">
<summary>
Gets or sets the compiler settings.
</summary>
<value>The compiler settings.</value>
</member>
<member name="P:CSScriptLibrary.MonoEvaluator.CompilingResult">
<summary>
Gets or sets the compiling result.
</summary>
<value>The compiling result.</value>
</member>
<member name="P:CSScriptLibrary.MonoEvaluator.ThrowOnError">
<summary>
Gets or sets the flag indicating if the compilation error should throw an exception.
</summary>
<value>The throw on error.</value>
</member>
<member name="P:CSScriptLibrary.MonoEvaluator.DisableReferencingFromCode">
<summary>
Gets or sets the flag indicating if the script code should be analyzed and the assemblies
that the script depend on (via '//css_...' and 'using ...' directives) should be referenced.
</summary>
<value></value>
</member>
<member name="P:CSScriptLibrary.MonoEvaluator.AutoResetEvaluatorOnError">
<summary>
Gets or sets a value indicating whether to reset <c>Mono.Evaluator</c> automatically after it fails
to compile the code.
<para>It is a work around for the <c>Mono.Evaluator</c> (v4.0.0.0), which cannot longer compile the valid C# code
after the first compilation failure.</para>
<para>This setting allows auto recreation (reset) of the actual <c>Mono.Evaluator</c> service.</para>
</summary>
<value>
<c>true</c> if <c>Mono.Evaluator</c> is to be reset automatically; otherwise, <c>false</c>.
</value>
</member>
<member name="P:CSScriptLibrary.MonoEvaluator.WarningsAsErrors">
<summary>
Gets or sets the warnings as errors.
</summary>
<value>The warnings as errors.</value>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.#ctor">
<summary>
Initializes a new instance of the <see cref="T:CSScriptLibrary.MonoEvaluator" /> class.
</summary>
</member>
<member name="P:CSScriptLibrary.MonoEvaluator.IsDebugSymbolDefined">
<summary>
Gets or sets the flag for defining the conditional compiling symbol "DEBUG".
</summary>
<value>The flag indicating if the "DEBUG" symbol defined.</value>
</member>
<member name="F:CSScriptLibrary.MonoEvaluator.debugBuild">
<summary>
Gets or sets the build configuration.
</summary>
<value>The configuration value.</value>
</member>
<member name="P:CSScriptLibrary.MonoEvaluator.DebugBuild">
<summary>
Gets or sets a value indicating whether to compile script with debug symbols.
<para>Note, affect of setting <c>DebugBuild</c> will always depend on the compiler implementation:
<list type="bullet">
<item><term>CodeDom</term><description>Fully supports. Generates degugging symbols (script can be debugged) and defines <c>DEBUG</c> and <c>TRACE</c> conditional symbols</description> </item>
<item><term>Mono</term><description>Partially supports. Defines <c>DEBUG</c> and <c>TRACE</c> conditional symbols</description> </item>
<item><term>Roslyn</term><description>Doesn't supports at all.</description> </item>
</list>
</para>
</summary>
<value><c>true</c> if 'debug build'; otherwise, <c>false</c>.</value>
</member>
<member name="P:CSScriptLibrary.MonoEvaluator.IsTraceSymbolDefined">
<summary>
Gets or sets the flag for defining the conditional compiling symbol "TRACE".
</summary>
<value>The flag indicating if the "TRACE" symbol defined.</value>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.Reset(System.Boolean)">
<summary>
Resets Evaluator.
<para>
Resetting means clearing all referenced assemblies, recreating <see cref="T:Mono.CSharp.CompilerSettings"/>,
<see cref="P:CSScriptLibrary.MonoEvaluator.CompilingResult"/> and underlying compiling services.
</para>
<para>Optionally the default current AppDomain assemblies can be referenced automatically with
<paramref name="referenceDomainAssemblies"/>.</para>
</summary>
<param name="referenceDomainAssemblies">if set to <c>true</c> the default assemblies of the current AppDomain
will be referenced (see <see cref="M:CSScriptLibrary.MonoEvaluator.ReferenceDomainAssemblies(CSScriptLibrary.DomainAssemblies)"/> method).
</param>
<returns>The freshly initialized instance of the <see cref="T:CSScriptLibrary.IEvaluator"/>.</returns>
</member>
<member name="F:CSScriptLibrary.MonoEvaluator.CreateCompilerSettings">
<summary>
The delegate for creating Mono compiler settings instance (<see cref="P:CSScriptLibrary.MonoEvaluator.CompilerSettings"/>). The delegate
is a convenient way to specify global defaults for compiler settings.
<example>
<code>MonoEvaluator.CreateCompilerSettings = () => new CompilerSettings {Unsafe = true };</code>
</example>
</summary>
</member>
<member name="F:CSScriptLibrary.MonoEvaluator.IgnoreDomainAssembliesWithPrefixes">
<summary>
The name prefixes of the assemblies that will be ignored when <see cref="T:Mono.CSharp.CompilerSettings"/> and <see cref="P:CSScriptLibrary.MonoEvaluator.CompilingResult"/>
references the loaded assemblies of the current AppDomain.
</summary>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.ReferenceDomainAssemblies(CSScriptLibrary.DomainAssemblies)">
<summary>
References the assemblies the are already loaded into the current <c>AppDomain</c>.
</summary>
<param name="assemblies">The type of assemblies to be referenced.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.ReferenceAssembly(System.String)">
<summary>
References the given assembly by the assembly path.
<para>It is safe to call this method multiple times for the same assembly. If the assembly already referenced it will not
be referenced again.</para>
</summary>
<param name="assembly">The path to the assembly file.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.ReferenceAssembly(System.Reflection.Assembly)">
<summary>
References the given assembly.
<para>It is safe to call this method multiple times
for the same assembly. If the assembly already referenced it will not
be referenced again.
</para>
</summary>
<param name="assembly">The assembly instance.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.ReferenceAssemblyByName(System.String)">
<summary>
References the name of the assembly by its partial name.
<para>Note that the referenced assembly will be loaded into the host AppDomain in order to resolve assembly partial name.</para>
<para>It is an equivalent of <c>Evaluator.ReferenceAssembly(Assembly.LoadWithPartialName(assemblyPartialName))</c></para>
</summary>
<param name="assemblyPartialName">Partial name of the assembly.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.TryReferenceAssemblyByNamespace(System.String,System.Boolean@)">
<summary>
References the assembly by the given namespace it implements.
</summary>
<param name="namespace">The namespace.</param>
<param name="resolved">Set to <c>true</c> if the namespace was successfully resolved (found) and
the reference was added; otherwise, <c>false</c>.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.ReferenceAssemblyByNamespace(System.String)">
<summary>
References the assembly by the given namespace it implements.
<para>Adds assembly reference if the namespace was successfully resolved (found) and, otherwise does nothing</para>
</summary>
<param name="namespace">The namespace.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.ReferenceAssemblyOf(System.Object)">
<summary>
References the assembly by the object, which belongs to this assembly.
<para>It is safe to call this method multiple times
for the same assembly. If the assembly already referenced it will not
be referenced again.
</para>
</summary>
<param name="obj">The object, which belongs to the assembly to be referenced.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.ReferenceAssembliesFromCode(System.String,System.String[])">
<summary>
References the assemblies from the script code.
<para>The method analyses and tries to resolve CS-Script directives (e.g. '//css_ref') and 'used' namespaces based on the optional search directories.</para>
</summary>
<param name="code">The script code.</param>
<param name="searchDirs">The assembly search/probing directories.</param>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.ReferenceAssemblyOf``1">
<summary>
References the assembly by the object, which belongs to this assembly.
<para>It is safe to call this method multiple times
for the same assembly. If the assembly already referenced it will not
be referenced again.
</para>
</summary>
<typeparam name="T">The type which is implemented in the assembly to be referenced.</typeparam>
<returns>The instance of the <see cref="T:CSScriptLibrary.IEvaluator"/> to allow fluent interface.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.GetReferencedAssemblies">
<summary>
Returns set of referenced assemblies.
<para>
Notre: the set of assemblies is get cleared on Reset.
</para>
</summary>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.LoadCode(System.String,System.Object[])">
<summary>
Evaluates and loads C# code to the current AppDomain. Returns instance of the first class defined in the code.
</summary>
<example>The following is the simple example of the LoadCode usage:
<code>
dynamic script = CSScript.MonoEvaluator
.LoadCode(@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
int result = script.Sum(1, 2);
</code>
</example>
<param name="scriptText">The C# script text.</param>
<param name="args">The non default constructor arguments.</param>
<returns>Instance of the class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.LoadFile(System.String)">
<summary>
Evaluates and loads C# code from the specified file to the current AppDomain. Returns instance of the first
class defined in the script file.
</summary>
<example>The following is the simple example of the interface alignment:
<code>
dynamic script = CSScript.MonoEvaluator
.LoadFile("calc.cs");
int result = script.Sum(1, 2);
</code>
</example>/// <param name="scriptFile">The C# script file.</param>
<returns>Instance of the class defined in the script file.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.LoadCode``1(System.String,System.Object[])">
<summary>
Evaluates and loads C# code to the current AppDomain. Returns instance of the first class defined in the code.
After initializing the class instance it is aligned to the interface specified by the parameter <c>T</c>.
<para><c>Note:</c> Because the interface alignment is a duck typing implementation the script class doesn't have to
inherit from <c>T</c>.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
public interface ICalc
{
int Sum(int a, int b);
}
....
ICalc calc = CSScript.MonoEvaluator
.LoadCode&lt;ICalc&gt;(@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
int result = calc.Sum(1, 2);
</code>
</example>
<typeparam name="T">The type of the interface type the script class instance should be aligned to.</typeparam>
<param name="scriptText">The C# script text.</param>
<param name="args">The non default type <c>T</c> constructor arguments.</param>
<returns>Aligned to the <c>T</c> interface instance of the class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.GetReferencedAssemblies(System.String,System.String[])">
<summary>
Gets referenced assemblies from the script code.
</summary>
<param name="code">The script code.</param>
<param name="searchDirs">The assembly search/probing directories.</param>
<returns>Array of the referenced assemblies</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.LoadFile``1(System.String)">
<summary>
Evaluates and loads C# code from the specified file to the current AppDomain. Returns instance of the first
class defined in the script file.
After initializing the class instance it is aligned to the interface specified by the parameter <c>T</c>.
<para><c>Note:</c> the script class does not have to inherit from the <c>T</c> parameter as the proxy type
will be generated anyway.</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
public interface ICalc
{
int Sum(int a, int b);
}
....
ICalc calc = CSScript.MonoEvaluator
.LoadFile&lt;ICalc&gt;("calc.cs");
int result = calc.Sum(1, 2);
</code>
</example>
<typeparam name="T">The type of the interface type the script class instance should be aligned to.</typeparam>
<param name="scriptFile">The C# script text.</param>
<returns>Aligned to the <c>T</c> interface instance of the class defined in the script file.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.LoadMethod(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>Scripting.DynamicClass</c>), evaluates it and loads (returns instance) the class to the current AppDomain.
</summary>
<example>The following is the simple example of the LoadMethod usage:
<code>
dynamic script = CSScript.MonoEvaluator
.LoadMethod(@"int Product(int a, int b)
{
return a * b;
}");
int result = script.Product(3, 2);
</code>
</example>
<param name="code">The C# script text.</param>
<returns>Instance of the first class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.LoadMethod``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>Scripting.DynamicClass</c>), evaluates it and loads (returns instance) the class to the current AppDomain.
<para>
After initializing the class instance it is aligned to the interface specified by the parameter <c>T</c>.
</para>
</summary>
<example>The following is the simple example of the interface alignment:
<code>
public interface ICalc
{
int Sum(int a, int b);
int Div(int a, int b);
}
....
ICalc script = CSScript.MonoEvaluator
.LoadMethod&lt;ICalc&gt;(@"public int Sum(int a, int b)
{
return a + b;
}
public int Div(int a, int b)
{
return a/b;
}");
int result = script.Div(15, 3);
</code>
</example>
<typeparam name="T">The type of the interface type the script class instance should be aligned to.</typeparam>
<param name="code">The C# script text.</param>
<returns>Aligned to the <c>T</c> interface instance of the auto-generated class defined in the script.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.CreateDelegate(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns non-typed <see cref="T:CSScriptLibrary.MethodDelegate"/> for class-less style of invoking.</para>
</summary>
<example>
<code>
var log = CSScript.MonoEvaluator
.CreateDelegate(@"void Log(string message)
{
Console.WriteLine(message);
}");
log("Test message");
</code>
</example>
<param name="code">The C# code.</param>
<returns> The instance of a non-typed <see cref="T:CSScriptLibrary.MethodDelegate"/></returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.CreateDelegate``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads the class to the current AppDomain.
<para>Returns typed <see cref="T:CSScriptLibrary.MethodDelegate`1"/> for class-less style of invoking.</para>
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<example>
<code>
var product = CSScript.MonoEvaluator
.CreateDelegate&lt;int&gt;(@"int Product(int a, int b)
{
return a * b;
}");
int result = product(3, 2);
</code>
</example>
<param name="code">The C# code.</param>
<returns> The instance of a typed <see cref="T:CSScriptLibrary.MethodDelegate`1"/></returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.LoadDelegate``1(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>), evaluates it and loads
the class to the current AppDomain.
<para>Returns instance of <c>T</c> delegate for the first method in the auto-generated class.</para>
</summary>
<example>
<code>
var Product = CSScript.MonoEvaluator
.LoadDelegate&lt;Func&lt;int, int, int&gt;&gt;(
@"int Product(int a, int b)
{
return a * b;
}");
int result = Product(3, 2);
</code>
</example>
<param name="code">The C# code.</param>
<returns>Instance of <c>T</c> delegate.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.CompileMethod(System.String)">
<summary>
Wraps C# code fragment into auto-generated class (type name <c>DynamicClass</c>) and evaluates it.
<para>
This method is a logical equivalent of <see cref="M:CSScriptLibrary.IEvaluator.CompileCode(System.String)"/> but is allows you to define
your script class by specifying class method instead of whole class declaration.</para>
</summary>
<example>
<code>
dynamic script = CSScript.MonoEvaluator
.CompileMethod(@"int Sum(int a, int b)
{
return a+b;
}")
.CreateObject("*");
var result = script.Sum(7, 3);
</code>
</example>
<param name="code">The C# code.</param>
<returns>The compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.GetCompiledType(System.String)">
<summary>
Gets a type from the last Compile/Evaluate/Load call.
</summary>
<param name="type">The type name.</param>
<returns>The type instance</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.CompileCode(System.String)">
<summary>
Evaluates (compiles) C# code (script). The C# code is a typical C# code containing a single or multiple class definition(s).
</summary>
<example>
<code>
Assembly asm = CSScript.MonoEvaluator
.CompileCode(@"using System;
public class Script
{
public int Sum(int a, int b)
{
return a+b;
}
}");
dynamic script = asm.CreateObject("*");
var result = script.Sum(7, 3);
</code>
</example>
<param name="scriptText">The C# script text.</param>
<returns>The compiled assembly.</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.Evaluate(System.String)">
<summary>
Evaluates the specified C# statement and returns the result of the execution.
</summary>
<example>
<code>
string upperCaseText = (string)CSScript.MonoEvaluator.Evaluate("\"Hello\".ToUpper();");
int sum = (int)CSScript.MonoEvaluator.Evaluate("1+2;");
</code>
</example>
<param name="scriptText">The C# statement.</param>
<returns>Result of the evaluation (execution).</returns>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.Run(System.String)">
<summary>
Evaluates the specified C# statement. The statement must be "void" (returning no result).
</summary>
<example>
<code>
CSScript.MonoEvaluator.Run("using System;");
CSScript.MonoEvaluator.Run("Console.WriteLine(\"Hello World!\");");
</code>
</example>
<param name="scriptText">The C# statement.</param>
</member>
<member name="M:CSScriptLibrary.MonoEvaluator.GetService">
<summary>
Gets the underlying <see cref="T:Mono.CSharp.Evaluator"/>.It is the actual Mono "compiler as service".
</summary>
<returns>Instance of <see cref="T:Mono.CSharp.Evaluator"/>.</returns>
</member>
<member name="T:CSScriptLibrary.CompilingResult">
<summary>
Custom implementation of <see cref="T:Mono.CSharp.ReportPrinter"/> required by
<see cref="N:Mono.CSharp"/> API model for handling (reporting) compilation errors.
<para><see cref="N:Mono.CSharp"/> default compiling error reporting (e.g. <see cref="T:Mono.CSharp.ConsoleReportPrinter"/>)
is not dev-friendly, thus <c>CompilingResult</c> is acting as an adapter bringing the Mono API close to the
traditional CodeDOM error reporting model.</para>
</summary>
</member>
<member name="F:CSScriptLibrary.CompilingResult.Errors">
<summary>
The collection of compiling errors.
</summary>
</member>
<member name="F:CSScriptLibrary.CompilingResult.Warnings">
<summary>
The collection of compiling warnings.
</summary>
</member>
<member name="P:CSScriptLibrary.CompilingResult.HasErrors">
<summary>
Indicates if the last compilation yielded any errors.
</summary>
<value>If set to <c>true</c> indicates presence of compilation error(s).</value>
</member>
<member name="P:CSScriptLibrary.CompilingResult.HasWarnings">
<summary>
Indicates if the last compilation yielded any warnings.
</summary>
<value>If set to <c>true</c> indicates presence of compilation warning(s).</value>
</member>
<member name="M:CSScriptLibrary.CompilingResult.CreateException(System.Boolean)">
<summary>
Creates the <see cref="T:System.Exception"/> containing combined error information.
Optionally warnings can also be included in the exception info.
</summary>
<param name="hideCompilerWarnings">The flag indicating if compiler warnings should be included in the error (<see cref="T:System.Exception"/>) info.</param>
<returns>Instance of the <see cref="T:csscript.CompilerException"/>.</returns>
</member>
<member name="M:CSScriptLibrary.CompilingResult.Reset">
<summary>
Clears all errors and warnings.
</summary>
</member>
<member name="M:CSScriptLibrary.CompilingResult.Print(Mono.CSharp.AbstractMessage,System.Boolean)">
<summary>
Handles compilation event message.
</summary>
<param name="msg">The compilation event message.</param>
<param name="showFullPath">if set to <c>true</c> [show full path].</param>
</member>
<member name="T:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1">
<summary>
A utility class which converts an object to specified interface T. The object does
not necessarily need to implement the interface formally.
</summary>
<typeparam name="T">Interface definition to convert to.</typeparam>
<remarks>
<para>
Class Information:
<list type="bullet">
<item name="authors">Authors: Ruben Hakopian</item>
<item name="date">March 2009</item>
<item name="originalURL">http://rubenhak.com/?p=167</item>
</list>
</para>
</remarks>
</member>
<member name="F:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1._proxyCache">
<summary>
Represents a map from a object type to the type of its proxy class.
</summary>
</member>
<member name="M:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1.As(System.Object,System.String[])">
<summary>
Converts specified object to an another object which implements interface T.
</summary>
<param name="o">The object to convert.</param>
<param name="refAssemblies">The string array containing file names to the additional dependency assemblies
the interface depends in. </param>
<returns>Converted object if succeeded; null otherwise.</returns>
</member>
<member name="M:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1.CheckSourceObject(System.Type,System.Type,System.String[])">
<summary>
Checks if the source type can be convert to destination interface type.
</summary>
<param name="interfaceType">The source type to convert from.</param>
<param name="sourceType">The destination interface type to convert to.</param>
<param name="refAssemblies">The string array containing file nemes to the additional dependency assemblies
the interface depends in. </param>
<returns>true if conversion can be performed; false otherwise</returns>
</member>
<member name="M:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1.CastToInterface(System.Type,System.Object,System.String[])">
<summary>
Creates an instance of an proxy object which implements interface T and wraps specified object.
</summary>
<param name="interfaceType">Type of the interface.</param>
<param name="o">The object to convert.</param>
<param name="refAssemblies">The string array containing file names to the additional dependency assemblies
the interface depends in. </param>
<returns>Instance of the proxy object.</returns>
</member>
<member name="M:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1.BuildProxyClass(System.Type,System.Type,System.Boolean,System.String[])">
<summary>
Builds the proxy class for specified interface and source types.
</summary>
<param name="interfaceType">Type of the interface.</param>
<param name="sourceType">Type of the source.</param>
<param name="injectNamespace">if set to <c>true</c> the <c>CSScriptLibrary.DynamicTypes</c>
will be injected the proxy class name.</param>
<param name="refAssemblies">The string array containing file names to the additional dependency assemblies
the interface depends in.</param>
<returns>Type definition for proxy class.</returns>
</member>
<member name="M:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1.BuildProxyClassCode(System.Type,System.Type,System.String@,System.Boolean)">
<summary>
Added by Oleg Shilo
</summary>
</member>
<member name="M:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1.GenerateProxyClass(System.Type,System.Type,System.Boolean)">
<summary>
Generates the proxy class.
</summary>
<param name="interfaceType">Type of the interface.</param>
<param name="sourceType">Type of the source.</param>
<param name="injectNamespace">if set to <c>true</c> the <c>CSScriptLibrary.DynamicTypes</c>
will be injected the proxy class name.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1.GenerateProxyClassProperties(System.CodeDom.CodeTypeDeclaration,System.Type,System.Type)">
<summary>
Generates the proxy class properties.
</summary>
<param name="genClass">The generated class.</param>
<param name="interfaceType">Type of the interface.</param>
<param name="sourceType">Type of the source.</param>
</member>
<member name="M:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1.GenerateProxyClassMethods(System.CodeDom.CodeTypeDeclaration,System.Type,System.Type)">
<summary>
Generates the proxy class methods.
</summary>
<param name="genClass">The generated class.</param>
<param name="interfaceType">Type of the interface.</param>
<param name="sourceType">Type of the source.</param>
</member>
<member name="M:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1.GenerateProxyClassEvents(System.CodeDom.CodeTypeDeclaration,System.CodeDom.CodeConstructor,System.Type,System.Type)">
<summary>
Generates the proxy class events.
</summary>
<param name="genClass">The generated class.</param>
<param name="constructor">The generated class constructor.</param>
<param name="interfaceType">Type of the interface.</param>
<param name="sourceType">Type of the source.</param>
</member>
<member name="T:CSScriptLibraryExtensionMethods">
<summary>
Method extensions for
</summary>
</member>
<member name="M:CSScriptLibraryExtensionMethods.GetScriptName(System.Reflection.Assembly)">
<summary>
Determines whether the specified assembly is a script assembly (compiled script) and returns full path of the script file
used to compile the assembly. The analysis is based on the fact that script assembly (in hosing scenarios) is always
stamped with <see cref="T:System.Reflection.AssemblyDescriptionAttribute"/>, which contains name of the script file the
assembly was compiled from.
<para>The format of the description </para>
</summary>
<param name="assembly">The assembly.</param>
<returns>
Script file path if the specified assembly is a script assembly otherwise <c>null</c>.
</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.SingletonExecute(System.Reflection.Assembly,System.Action,System.Action)">
<summary>
Executes an action as a "singleton".
<para>This extension method takes a delegate and executes it in the context of the claimed named mutex. It doesn't execute the action and
returns immediately if any previously invoked action from the same context is still in progress: mutex is not released.</para>
<para>Mutex name uniqueness is based on the assembly identity (location).</para>
<code>
//application
class Program
{
static void Main()
{
Assembly.GetExecutingAssembly()
.SingletonExecute(main,
()=>MessageBox.Show("Another instance is already running."));
}
static void main()
{
//business logic
}
}
//script
var script = @"using System.Reflection;
public static void DoWork()
{
Assembly.GetExecutingAssembly()
.SingletonExecute(() =>
{
//business logic;
},
() => Console.WriteLine(""another instance of 'script' is being executed""));
}";
var DoWork = CSScript.LoadMethod(script).GetStaticMethod();
Task.Run(DoWork);
Task.Run(DoWork);
Task.Run(DoWork);
</code>
</summary>
<param name="assembly">The assembly.</param>
<param name="action">The action.</param>
<param name="onBusyAction">The on busy action.</param>
</member>
<member name="M:CSScriptLibraryExtensionMethods.GetHelper(System.Reflection.Assembly)">
<summary>
Constructs and returns an instance of CSScriptLibrary.AsmHelper class from the underlying Assembly.
</summary>
<returns>CSScriptLibrary.AsmHelper</returns>
<param name="obj">Instance of the type to be extended</param>
<returns>CSScriptLibrary.AsmHelper</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.GetStaticMethod(System.Reflection.Assembly,System.String,System.Object[])">
<summary>
Returns which emitted delegate based on MethodInfo of the underlying assembly.
</summary>
<param name="obj">Instance of the type to be extended</param>
<param name="methodName">'Method' name including 'Type' name (eg. MyType.DoJob). It is allowed to use wild
card character to indicate that the Type name of the method is irrelevant (e.g. "*.Method" or even *.*).</param>
<param name="list">List of 'Method' arguments.
Note that values of the items in the list do not have any importance. The type of the list item is
to be used for method search. For example if class Calc has method Sum(int a, int b) the method invoker
can be obtained as following:
<para>
GetStaticMethod("Calc.Sum", 0, 0)
</para>
You can pass any integer as the second and third parameter because it will be used only to obtain the
information about the parameter type (in this case System.Int32).</param>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.GetStaticMethod``1(System.Reflection.Assembly,System.String,System.Object[])">
<summary>
Returns which emitted delegate based on MethodInfo of the underlying assembly.
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<param name="obj">Instance of the type to be extended</param>
<param name="methodName">'Method' name including 'Type' name (eg. MyType.DoJob). It is allowed to use wild
card character to indicate that the Type name of the method is irrelevant (e.g. "*.Method" or even *.*).</param>
<param name="list">List of 'Method' arguments.
Note that values of the items in the list do not have any importance. The type of the list item is
to be used for method search. For example if class Calc has method Sum(int a, int b) the method invoker
can be obtained as following:
<para>
GetStaticMethod("Calc.Sum", 0, 0)
</para>
You can pass any integer as the second and third parameter because it will be used only to obtain the
information about the parameter type (in this case System.Int32).</param>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.GetStaticMethodWithArgs(System.Reflection.Assembly,System.String,System.Type[])">
<summary>
Returns which emitted delegate based on MethodInfo of the underlying assembly.
</summary>
<param name="obj">Instance of the type to be extended</param>
<param name="methodName">'Method' name including 'Type' name (eg. MyType.DoJob). It is allowed to use wild
card character to indicate that the Type name of the method is irrelevant (e.g. "*.Method" or even *.*).</param>
<param name="list">List of 'Method' arguments.</param>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.GetStaticMethodWithArgs``1(System.Reflection.Assembly,System.String,System.Type[])">
<summary>
Returns which emitted delegate based on MethodInfo of the underlying assembly.
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<param name="obj">Instance of the type to be extended</param>
<param name="methodName">'Method' name including 'Type' name (eg. MyType.DoJob). It is allowed to use wild
card character to indicate that the Type name of the method is irrelevant (e.g. "*.Method" or even *.*).</param>
<param name="list">List of 'Method' arguments.</param>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.GetStaticMethod(System.Reflection.Assembly)">
<summary>
<param name="obj">Instance of the type to be extended</param>
Specialized version of GetMethodInvoker which returns MethodDelegate of the very first method found in the
underlying assembly. This method is an overloaded implementation of the GetStaticMethod(string methodName, params object[] list).
Use this method when script assembly contains only one single type with one method.
</summary>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.GetStaticMethod``1(System.Reflection.Assembly)">
<summary>
<param name="obj">Instance of the type to be extended</param>
Specialized version of GetMethodInvoker which returns MethodDelegate of the very first method found in the
underlying assembly. This method is an overloaded implementation of the GetStaticMethod(string methodName, params object[] list).
Use this method when script assembly contains only one single type with one method.
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<returns>Returns delegate of CSScriptLibrary.MethodDelegate type.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.TryCreateObject(System.Reflection.Assembly,System.String)">
<summary>
Attempts to create instance of a class from underlying assembly.
</summary>
<param name="obj">Instance of the type to be extended</param>
<param name="typeName">The 'Type' full name of the type to create. (see Assembly.CreateInstance()).
You can use wild card meaning the first type found. However only full wild card "*" is supported.</param>
<returns>Instance of the 'Type'. Returns null if the instance cannot be created.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.CreateObject(System.Reflection.Assembly,System.String,System.Object[])">
<summary>
Creates instance of a class from underlying assembly.
</summary>
<param name="obj">Instance of the type to be extended</param>
<param name="typeName">The 'Type' full name of the type to create. (see Assembly.CreateInstance()).
You can use wild card meaning the first type found. However only full wild card "*" is supported.</param>
<param name="args">The non default constructor arguments.</param>
<returns>Instance of the 'Type'. Throws an ApplicationException if the instance cannot be created.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.CreateInstance(System.Reflection.Assembly,System.String,System.Object[])">
<summary>
Creates the instance of the Type.
<para>It is nothing else but a more convenient version of Assembly. CreateInstance(string typeName, bool ignoreCase, BindingFlags...) method.
It's objective is to simplify invoking the constructors with parameters.
</para>
</summary>
<param name="assembly">The assembly.</param>
<param name="typeName">Name of the type.</param>
<param name="args">The arguments.</param>
<returns></returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.ExtendLife(System.MarshalByRefObject,System.TimeSpan)">
<summary>
Extends the life of the instance created in the remote AppDomain.
</summary>
<param name="obj">The instance created in the remote AppDomain.</param>
<param name="renewalTime">The renewal time.</param>
<returns>Returns <see cref="T:System.Runtime.Remoting.LifetimeClientSponsor" /> object.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.ExtendLifeFromMinutes(System.Object,System.Int32)">
<summary>
Extends the life of the instance created in the remote AppDomain.
</summary>
<param name="obj">The instance created in the remote AppDomain.</param>
<param name="minutes">The renewal time in minutes.</param>
<returns>Returns <see cref="T:System.Runtime.Remoting.LifetimeClientSponsor" /> object.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.ExtendLifeFromMinutes``1(CSScriptLibrary.MethodDelegate{``0},System.Int32)">
<summary>
Extends the life of the instance created in the remote AppDomain.
</summary>
<typeparam name="T">The delegate return type.</typeparam>
<param name="method">The instance of the <see cref="T:CSScriptLibrary.MethodDelegate`1"/> created in the remote AppDomain.</param>
<param name="minutes">The renewal time in minutes.</param>
<returns>Returns <see cref="T:System.Runtime.Remoting.LifetimeClientSponsor" /> object.</returns>
<exception cref="T:System.Exception">MethodDelegate doesn't seem to be owned by the transparent proxy connected to the remote AppDomain object. +
You don't need to extend life local objects.</exception>
</member>
<member name="M:CSScriptLibraryExtensionMethods.ExtendLifeFromMinutes(CSScriptLibrary.MethodDelegate,System.Int32)">
<summary>
Extends the life of the instance created in the remote AppDomain.
</summary>
<param name="method">The instance of the <see cref="T:CSScriptLibrary.MethodDelegate"/> created in the remote AppDomain.</param>
<param name="minutes">The renewal time in minutes.</param>
<returns>Returns <see cref="T:System.Runtime.Remoting.LifetimeClientSponsor" /> object.</returns>
<exception cref="T:System.Exception">MethodDelegate doesn't seem to be owned by the transparent proxy connected to the remote AppDomain object. +
You don't need to extend life local objects.</exception>
</member>
<member name="M:CSScriptLibraryExtensionMethods.TryAlignToInterface``1(System.Object)">
<summary>
Attempts to align (pseudo typecast) object to interface.
<para>The object does not necessarily need to implement the interface formally.</para>
<para>See <see cref="T:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1"/>.</para>
</summary>
<typeparam name="T">Interface definition to align with.</typeparam>
<param name="obj">The object to be aligned with the interface.</param>
<returns>Interface object or <c>null</c> if alignment was unsuccessful.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.TryAlignToInterface``1(System.Object,System.Boolean)">
<summary>
Attempts to align (pseudo typecast) object to interface.
<para>The object does not necessarily need to implement the interface formally.</para>
<para>See <see cref="T:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1"/>.</para>
</summary>
<typeparam name="T">Interface definition to align with.</typeparam>
<param name="obj">The object to be aligned with the interface.</param>
<param name="useAppDomainAssemblies">If set to <c>true</c> uses all loaded assemblies of the current <see cref="T:System.AppDomain"/>
when emitting (compiling) aligned proxy object.</param>
<returns>Interface object or <c>null</c> if alignment was unsuccessful.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.TryAlignToInterface``1(System.Object,System.String[])">
<summary>
Attempts to align (pseudo typecast) object to interface.
<para>The object does not necessarily need to implement the interface formally.</para>
<para>See <see cref="T:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1"/>.</para>
</summary>
<typeparam name="T">Interface definition to align with.</typeparam>
<param name="obj">The object to be aligned with the interface.</param>
<param name="refAssemblies">The string array containing file nemes to the additional dependency
assemblies the interface depends in. </param>
<returns>Interface object or <c>null</c> if alignment was unsuccessful.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.TryAlignToInterface``1(System.Object,System.Boolean,System.String[])">
<summary>
Attempts to align (pseudo typecast) object to interface.
<para>The object does not necessarily need to implement the interface formally.</para>
<para>See <see cref="T:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1"/>.</para>
</summary>
<typeparam name="T">Interface definition to align with.</typeparam>
<param name="obj">The object to be aligned with the interface.</param>
<param name="useAppDomainAssemblies">If set to <c>true</c> uses all loaded assemblies of the current <see cref="T:System.AppDomain"/>
when emitting (compiling) aligned proxy object.</param>
<param name="refAssemblies">The string array containing file names to the additional dependency
assemblies the interface depends in. </param>
<returns>Interface object or <c>null</c> if alignment was unsuccessful.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.AlignToInterface``1(System.Object,System.Boolean)">
<summary>
Aligns (pseudo typecasts) object to interface.
<para>The object does not necessarily need to implement the interface formally.</para>
<para>See <see cref="T:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1"/>.</para>
</summary>
<typeparam name="T">Interface definition to align with.</typeparam>
<param name="obj">The object to be aligned with the interface.</param>
<param name="useAppDomainAssemblies">If set to <c>true</c> uses all non-GAC loaded assemblies of the current <see cref="T:System.AppDomain"/>
when emitting (compiling) aligned proxy object.</param>
<returns>Interface object.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.AlignToInterface``1(System.Object,System.String[])">
<summary>
Aligns (pseudo typecasts) object to interface.
<para>The object does not necessarily need to implement the interface formally.</para>
<para>See <see cref="T:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1"/>.</para>
</summary>
<typeparam name="T">Interface definition to align with.</typeparam>
<param name="obj">The object to be aligned with the interface.</param>
<param name="refAssemblies">The string array containing file names to the additional dependency
assemblies the interface depends in. </param>
<returns>Interface object.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.AlignToInterface``1(System.Object,System.Boolean,System.String[])">
<summary>
Aligns (pseudo typecasts) object to interface.
<para>The object does not necessarily need to implement the interface formally.</para>
<para>See <see cref="T:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1"/>.</para>
</summary>
<typeparam name="T">Interface definition to align with.</typeparam>
<param name="obj">The object to be aligned with the interface.</param>
<param name="useAppDomainAssemblies">If set to <c>true</c> uses all non-GAC loaded assemblies of the current <see cref="T:System.AppDomain"/>
when emitting (compiling) aligned proxy object.</param>
<param name="refAssemblies">The string array containing file names to the additional dependency
assemblies the interface depends in. </param>
<returns>Interface object.</returns>
</member>
<member name="M:CSScriptLibraryExtensionMethods.AlignToInterface``1(System.Object)">
<summary>
Aligns (pseudo typecasts) object to interface.
<para>The object does not necessarily need to implement the interface formally.</para>
<para>See <see cref="T:CSScriptLibrary.ThirdpartyLibraries.Rubenhak.Utils.ObjectCaster`1"/>.</para>
</summary>
<typeparam name="T">Interface definition to align with.</typeparam>
<param name="obj">The object to be aligned with the interface.</param>
<returns>Interface object.</returns>
</member>
</members>
</doc>