"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo ejecutar el código desde un archivo de texto en una aplicación WPF C#?

¿Cómo puedo ejecutar el código desde un archivo de texto en una aplicación WPF C#?

Publicado el 2025-02-06
Navegar:252

How Can I Execute Code from a Text File in a WPF C# Application?

Ejecución de código dinámico en WPF C# aplicaciones

Este artículo aborda el problema de ejecutar código desde un archivo de texto externo dentro de una aplicación WPF C#. El archivo de texto, que contiene el código que se ejecutará, reside en el directorio de ejecución de la aplicación.

Implementación

Esta solución aprovecha una combinación de técnicas de compilación y reflexión de código. El proceso implica la compilación en tiempo real del código desde el archivo de texto y la instancia e invocación posterior del método de destino del ensamblaje compilado.

El siguiente fragmento de código ilustra este enfoque:

// ... code ...

Dictionary providerOptions = new Dictionary
{
    {"CompilerVersion", "v3.5"}
};
CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions);

CompilerParameters compilerParams = new CompilerParameters
{
    GenerateInMemory = true,
    GenerateExecutable = false
};

CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, sourceCode);

if (results.Errors.Count > 0)
    throw new Exception("Compilation failed!");

object instance = results.CompiledAssembly.CreateInstance("Foo.Bar"); // Assuming the class is named "Bar" in the "Foo" namespace
MethodInfo method = instance.GetType().GetMethod("SayHello"); // Assuming the method is named "SayHello"
method.Invoke(instance, null);

explicación detallada

El código primero lee el código C# del archivo de texto en una variable de cadena ( sourcecode ). A csharpCodeprovider se inicializa con opciones de compilador especificadas. compilerParameters están configurados para generar el ensamblaje compilado en la memoria, sin crear un archivo ejecutable. El método compilEssemblyFromSource luego realiza la compilación.

La comprobación de errores sigue el proceso de compilación. Si la compilación es exitosa, se crea una instancia de la clase compilada usando createInstance , y el método especificado se invoca usando getMethod y invoke . Esto permite la ejecución dinámica del código cargado externamente. Tenga en cuenta que el espacio de nombres y los nombres de clase/método deben coincidir con el código en el archivo de texto. El manejo de errores (por ejemplo, los bloques de prueba de prueba) se debe agregar para obtener robustez en un entorno de producción.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3