Wie kann ich C#-Code mit Roslyn aus einer Zeichenfolge ausführen und globale Variablen aus einem Dictionary<string, objeC#

Ein Treffpunkt für C#-Programmierer
Guest
 Wie kann ich C#-Code mit Roslyn aus einer Zeichenfolge ausführen und globale Variablen aus einem Dictionary<string, obje

Post by Guest »

Ich arbeite an einer C#-Anwendung, in der ich mit Roslyn C#-Code ausführen muss, der als Zeichenfolgeneingabe bereitgestellt wird. Die Herausforderung besteht darin, diesen Code auszuführen und auf globale Variablen zuzugreifen, die in einem Dictionary gespeichert sind. Die Variablen sind dynamisch, abhängig von der Eingabe des Benutzers.

Code: Select all

static async Task Main(string[] args)
{
var variables = new Dictionary
{
{ "x", 10 },
{ "y", 20 },
{ "message", "Hello, Roslyn!" }
};

string script = @"
var result = x + y;
$""{message} Result: {result}"";
";

// Options de script
var options = ScriptOptions.Default.AddReferences(
typeof(object).Assembly
);

var globals = new Globals { Variables = variables };

try
{
var result = await CSharpScript.EvaluateAsync(
script,
options,
globals
);

Console.WriteLine(result);
Console.ReadLine();
}
catch (CompilationErrorException ex)
{
Console.WriteLine("Erreur de compilation :");
Console.WriteLine(string.Join(Environment.NewLine, ex.Diagnostics));
}
Console.ReadLine();
}
Ich übergebe das Objekt globals, erhalte jedoch die folgenden Kompilierungsfehler:

Code: Select all

Erreur de compilation :
(2,26): error CS0103: The name 'x' does not exist in the current context
(2,30): error CS0103: The name 'y' does not exist in the current context
(3,16): error CS0103: The name 'message' does not exist in the current context
(3,13): error CS0201: Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement
Diese Fehler weisen darauf hin, dass das Skript die Variablen x, y und message nicht finden kann, obwohl sie sich im Wörterbuch befinden. Wie kann ich diese dynamischen globalen Variablen korrekt an das Skript übergeben?
Hinweis: Die im Skript verwendeten Variablen können jeden Typ haben, JOBJECT DataTables...

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post