Mit C# Scripting ist es möglich, zur Laufzeit C# Code auszuführen um so die eigene Applikation zu erweitern oder leichter zu debuggen.

An Hand eines kleinen Beispiels wird gezeigt, wie man Programm-Code mit Script-Code verbinden kann.

Definieren einer Globals-Klasse

Mit folgender Klasse, kann das Script direkt mit der Anwendung, die das Script ausführt, interagieren:

public class API
{ 
  public void WriteToConsole(string input)
  { 
    Console.WriteLine(input); 
  } 
  public List<object> GlobalData { get; } = new List<object>(); 
}
Dabei sind alle Methoden und Properties im auszuführenden Script direkt verfügbar.

Anlegen und Kompilieren des Scripts

Nun muss das Script noch erstellt und kompiliert werden.

string script =
    "int x=5;" +
    "WriteToConsole(\"Die Zahl: \"+x);" +
    "string testString=\"Example\";";

var options = ScriptOptions.Default
    .WithReferences(typeof(Type1).Assembly, typeof(Type2).Assembly)
    .WithImports("System.Collections.Generic", "System.Linq");

var finalScript = CSharpScript.Create(script, options, typeof(API));
finalScript.Compile();

Ausführen des Scripts

Beim Ausführen des Skriptes kann dann eine Instanz der API mitgegeben werden:

ScriptState<object> result = await finalScript.RunAsync(new API());

Auswerten des Results

Mit Hilfe des Result Objektes kann man dann auf die erstellten Variablen und deren Werte zugreifen:

foreach (var item in result.Variables)
{
    Console.WriteLine(item.Name + "=" + item.Value);
}

Von CarlWenz

Ein Gedanke zu „C# Scripting – Hello World Beispiel“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert