updfate 20250919
This commit is contained in:
141
OnDocScript/Class1.cs
Normal file
141
OnDocScript/Class1.cs
Normal file
@@ -0,0 +1,141 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlTypes;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Security.Policy;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
using Microsoft.CodeAnalysis.CSharp.Scripting;
|
||||
using Microsoft.CodeAnalysis.Options;
|
||||
using Microsoft.CodeAnalysis.Scripting;
|
||||
using Microsoft.CSharp;
|
||||
|
||||
|
||||
namespace OnDocScript
|
||||
{
|
||||
public class Script
|
||||
{
|
||||
public string script = "";
|
||||
public List<ScriptVars> vars = new List<ScriptVars>();
|
||||
public List<Imports> Imports = new List<Imports>();
|
||||
public List<Defaults> Defaults = new List<Defaults>();
|
||||
public string resultas = "JSON";
|
||||
public object result;
|
||||
public int ErrorCode = 0;
|
||||
public string Error = "";
|
||||
|
||||
public Script()
|
||||
{
|
||||
SetImports();
|
||||
|
||||
}
|
||||
public Script(string connectionstring)
|
||||
{
|
||||
Defaults.Add(new Defaults("Connectionstring", connectionstring));
|
||||
SetImports();
|
||||
|
||||
}
|
||||
public Script(string connectionstring, string ondocapikeyapikey)
|
||||
{
|
||||
Defaults.Add(new Defaults("Connectionstring", connectionstring));
|
||||
Defaults.Add(new Defaults("OnDocAPIKey", ondocapikeyapikey));
|
||||
SetImports();
|
||||
}
|
||||
public void SetImports()
|
||||
{
|
||||
Imports.Add(new Imports("System", ""));
|
||||
Imports.Add(new Imports("System.Data", ""));
|
||||
Imports.Add(new Imports("System.IO", ""));
|
||||
//Imports.Add(new Imports("System.Net.Http", "System.Net.Http.dll"));
|
||||
Imports.Add(new Imports("Newtonsoft.JSON", "Newtonsoft.Json.dll"));
|
||||
}
|
||||
}
|
||||
|
||||
public class ScriptVars
|
||||
{
|
||||
public string Variable = "";
|
||||
public string ReplaceText = "";
|
||||
|
||||
public ScriptVars(string variable, string replacetext)
|
||||
{
|
||||
Variable = variable;
|
||||
ReplaceText = replacetext;
|
||||
}
|
||||
}
|
||||
public class Imports
|
||||
{
|
||||
public string ImportName = "";
|
||||
public string DllName = "";
|
||||
|
||||
public Imports(string importname,string dllname)
|
||||
{
|
||||
ImportName = importname;
|
||||
DllName= dllname;
|
||||
}
|
||||
}
|
||||
|
||||
public class Defaults
|
||||
{
|
||||
public string Name = "";
|
||||
public string Value = "";
|
||||
|
||||
public Defaults(string name, string value)
|
||||
{
|
||||
Name = name; Value = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class Scripter
|
||||
{
|
||||
|
||||
public void RunScript(ref Script script)
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
string scriptcode = script.script;
|
||||
foreach (ScriptVars sv in script.vars)
|
||||
{
|
||||
scriptcode = scriptcode.Replace("&&"+sv.Variable+"&&", sv.ReplaceText);
|
||||
}
|
||||
foreach (Defaults df in script.Defaults)
|
||||
|
||||
{
|
||||
scriptcode = scriptcode.Replace("&&"+df.Name+"&&", df.Value);
|
||||
}
|
||||
|
||||
//Imports und ImportOptinen
|
||||
var options = ScriptOptions.Default;
|
||||
|
||||
string[] imports = new string[script.Imports.Count];
|
||||
int cntimportdll = 0;
|
||||
int i = 0;
|
||||
foreach (Imports import in script.Imports)
|
||||
{
|
||||
imports[i] = import.ImportName;
|
||||
if (import.DllName.ToString() != "")
|
||||
{
|
||||
options = options.AddReferences(Assembly.LoadFrom(import.DllName));
|
||||
}
|
||||
i = i + 1;
|
||||
}
|
||||
options.WithImports(imports);
|
||||
|
||||
// Run Script
|
||||
var result = CSharpScript.EvaluateAsync(scriptcode, options);
|
||||
script.ErrorCode = 0;
|
||||
script.result = result.Result.ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
script.ErrorCode = 400;
|
||||
script.Error = ex.Message;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user