Maison > développement back-end > C++ > .NET peut-il compiler et exécuter du code de manière dynamique au moment de l'exécution ?

.NET peut-il compiler et exécuter du code de manière dynamique au moment de l'exécution ?

Linda Hamilton
Libérer: 2025-01-05 11:28:39
original
214 Les gens l'ont consulté

Can .NET Compile and Run Code Dynamically at Runtime?

Pouvons-nous générer un nouveau code et l'exécuter à la volée dans .NET ?

Vous souhaitez permettre aux utilisateurs de saisir des équations dans une zone de texte et appliquez-les aux points de données entrants. Même si l'analyse du texte de l'équation pour chaque calcul était votre approche initiale, vous recherchez une solution plus efficace : compiler l'équation en fonction au moment de l'exécution.

Dans .NET, cela est en effet possible en utilisant les techniques trouvées dans Microsoft. Espaces de noms CSharp, System.CodeDom.Compiler et System.Reflection. Une simple application console peut illustrer ce concept :

using Microsoft.CSharp;
using System;
using System.CodeDom.Compiler;
using System.Reflection;

namespace RuntimeCompilationTest {
    class Program
    {
        static void Main(string[] args) {
            // Define the source code for the SomeClass class
            string sourceCode = @"
                public class SomeClass {
                    public int Add42 (int parameter) {
                        return parameter += 42;
                    }
                }";

            // Set up compilation parameters
            var compParms = new CompilerParameters{
                GenerateExecutable = false, 
                GenerateInMemory = true
            };

            // Create a C# code provider
            var csProvider = new CSharpCodeProvider();

            // Compile the source code
            CompilerResults compilerResults = 
                csProvider.CompileAssemblyFromSource(compParms, sourceCode);

            // Create an instance of the SomeClass type
            object typeInstance = 
                compilerResults.CompiledAssembly.CreateInstance("SomeClass");

            // Get the Add42 method
            MethodInfo mi = typeInstance.GetType().GetMethod("Add42");

            // Invoke the Add42 method and display the output
            int methodOutput = 
                (int)mi.Invoke(typeInstance, new object[] { 1 }); 
            Console.WriteLine(methodOutput);
            Console.ReadLine();
        }
    }
}
Copier après la connexion

Dans ce code :

  • Le code source est défini pour la classe SomeClass contenant la méthode Add42.
  • La configuration pour la compilation du code est mise en place via compParms.
  • csProvider compile la source code.
  • Une instance de SomeClass est créée.
  • La méthode Add42 est invoquée et sa sortie est affichée.

Cette démonstration montre la possibilité de compiler et d'exécuter nouveau code dynamiquement dans .NET.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal