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 サイトの他の関連記事を参照してください。