Frage:
Ist es möglich, neuen Code während der Laufzeit zu kompilieren und auszuführen? .NET, das möglicherweise vom Benutzer eingegebene Gleichungen in umwandelt Funktionen?
Antwort:
Ja, es ist möglich, neuen Code zur Laufzeit in .NET zu kompilieren und auszuführen. Dies kann durch die Nutzung verschiedener Klassen innerhalb der Namespaces Microsoft.CSharp, System.CodeDom.Compiler und System.Reflection erreicht werden.
Implementierung:
Hier ist ein vereinfachtes C# Konsolenanwendung, die dies demonstriert Funktionalität:
using Microsoft.CSharp; using System; using System.CodeDom.Compiler; using System.Reflection; namespace RuntimeCompilationTest { class Program { static void Main(string[] args) { string sourceCode = @" public class SomeClass { public int Add42(int parameter) { return parameter += 42; } }"; // Define compilation parameters CompilerParameters compParms = new CompilerParameters { GenerateExecutable = false, GenerateInMemory = true }; // Compile the source code using CSharpCodeProvider var csProvider = new CSharpCodeProvider(); CompilerResults compilerResults = csProvider.CompileAssemblyFromSource(compParms, sourceCode); // Create an instance of the compiled class object typeInstance = compilerResults.CompiledAssembly.CreateInstance("SomeClass"); // Get the Add42 method MethodInfo mi = typeInstance.GetType().GetMethod("Add42"); // Invoke the method int methodOutput = (int)mi.Invoke(typeInstance, new object[] { 1 }); // Output the result Console.WriteLine(methodOutput); Console.ReadLine(); } } }
Erklärung:
In diesem Beispiel definieren wir den Quellcode für unsere hypothetische „SomeClass“ mit einer „Add42“-Methode. Mit dem CSharpCodeProvider können wir den Quellcode im Speicher kompilieren. Nach der Kompilierung erstellen wir eine Instanz von SomeClass und rufen die MethodInfo der Add42-Methode ab. Schließlich rufen wir die Methode auf und drucken ihre Ausgabe aus, um zu demonstrieren, wie neu kompilierter Code dynamisch in .NET ausgeführt werden kann.
Das obige ist der detaillierte Inhalt vonKann .NET Code zur Laufzeit kompilieren und ausführen und so die dynamische Funktionserstellung aus Benutzereingaben ermöglichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!