ホームページ >バックエンド開発 >C++ >WPF アプリケーションでテキスト ファイルから C# コードを動的に実行するにはどうすればよいですか?

WPF アプリケーションでテキスト ファイルから C# コードを動的に実行するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-07 19:52:41793ブラウズ

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

WPF C# アプリケーションでテキスト ファイルからコードを動的に実行します

WPF C# アプリケーションは、実行時に個別のテキスト ファイルからコードを動的に実行できます。これは、コードが頻繁に変更される場合や、コードを外部リソースからロードする必要がある場合に便利です。

これを行うには、Microsoft の C# コード プロバイダーを使用できます。これにより、コードをオンザフライでコンパイルして実行できます。詳細なコード例は次のとおりです:

<code class="language-csharp">using System.CodeDom.Compiler;
using System.Reflection;
using System.Text;
using System.IO; // 添加此命名空间用于文件读取

// 从文本文件加载代码
string sourceCode = File.ReadAllText("path/to/your/code.cs"); // 将"path/to/your/code.cs"替换为您的代码文件路径


// 创建C#代码提供程序
CSharpCodeProvider provider = new CSharpCodeProvider();

// 设置编译器参数
CompilerParameters compilerParams = new CompilerParameters
{
    GenerateInMemory = true,
    GenerateExecutable = false,
    ReferencedAssemblies = { "mscorlib.dll", "System.dll", "System.Windows.Forms.dll" } // 添加必要的引用程序集
};

// 编译代码
CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, sourceCode);

// 检查错误
if (results.Errors.Count > 0)
{
    StringBuilder sb = new StringBuilder();
    foreach (CompilerError error in results.Errors)
    {
        sb.AppendLine(error.ToString());
    }
    throw new Exception("编译错误:" + sb.ToString());
}

// 创建已编译代码的实例
object instance = results.CompiledAssembly.CreateInstance("CustomCode.MyCode"); // 假设您的代码定义在CustomCode命名空间下,类名为MyCode

// 调用方法以执行代码
MethodInfo method = instance.GetType().GetMethod("Execute");
if (method != null)
{
    method.Invoke(instance, null);
}
else
{
    throw new Exception("未找到Execute方法。");
}</code>

この例では、sourceCode 文字列から実行されるコードを読み取ります。 "path/to/your/code.cs" を実際のテキスト ファイルのパスに置き換えてください。 さらに、コンパイラーが必要なアセンブリを確実に見つけられるように、必要な名前空間 System.IO および ReferencedAssemblies パラメーターを追加しました。 エラー処理も改善され、より詳細なエラー情報が提供されるようになりました。

このアプローチにより、外部ファイルからコードを動的にロードして実行できるため、アプリケーション設計に柔軟性と適応性がもたらされます。 この方法はセキュリティ上のリスクがあるため、信頼できるコード ソースに対してのみ使用する必要があることに注意してください。

以上がWPF アプリケーションでテキスト ファイルから C# コードを動的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。