C# Scripting – Hello World Beispiel

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.

Hinzufügen des passenden nuGet – Package

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);
}

Ein Kommentar

Kommentar hinterlassen

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