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

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

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-07 19:37:42599ブラウズ

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

C# コード ファイルの動的実行

質問:

WPF C# アプリケーションには、アプリケーションのランタイム ディレクトリ内の別のテキスト ファイルに保存されているコードを実行する必要があるボタンが付属しています。

解決策:

テキスト ファイル内のコードを動的に実行するには、次の手順に従います:

  1. コードをコンパイルします: C# コンパイラー (CSharpCodeProvider など) を使用して、テキスト ファイル内のコードをアセンブリにコンパイルします。
  2. コンパイル済みアセンブリのインスタンスを作成します。 System.Reflection.Assembly クラスの CreateInstance() メソッドを使用して、コンパイル済みアセンブリのインスタンスを作成します。
  3. メソッドの呼び出し: System.Reflection.Type クラスの GetMethod() メソッドと Invoke() メソッドを使用して、インスタンス上で目的のメソッドを呼び出します。

動的にコンパイルされたクラス メソッドを実行する方法のサンプル コードを次に示します。

<code class="language-csharp">using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Net;
using Microsoft.CSharp;
using System.CodeDom.Compiler;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string source =
            @"
namespace Foo
{
    public class Bar
    {
        public void SayHello()
        {
            System.Console.WriteLine(""Hello World"");
        }
    }
}
            ";

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

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

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

            if (results.Errors.Count != 0)
                throw new Exception("编译失败!");

            object o = results.CompiledAssembly.CreateInstance("Foo.Bar");
            MethodInfo mi = o.GetType().GetMethod("SayHello");
            mi.Invoke(o, null);
        }
    }
}</code>

これらの手順に従って、WPF アプリケーションのコード ファイルから C# コードを動的に実行できます。

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

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