ホームページ >バックエンド開発 >C++ >リフレクションを使用して C# でプロパティ値を動的に設定するにはどうすればよいですか?

リフレクションを使用して C# でプロパティ値を動的に設定するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-04 06:45:40287ブラウズ

How Can Reflection Be Used to Dynamically Set Property Values in C#?

リフレクションを利用したプロパティ値の変更

強力な .NET Framework 機能であるリフレクションにより、オブジェクトとそのメンバーを検査および変更する機能が付与されますダイナミックに。このコンテキストでは、リフレクションを利用して C# クラス内の特定のプロパティの値を設定する方法を検討します。

「first_name」などのプロパティの名前がわかっているシナリオを考えてみましょう。この文字列を使用して値を変更したいと考えています。リフレクションは、この問題に対する解決策を提供します。

望ましい結果を達成するには、次の手順を実行できます。

  1. Type.GetProperty を使用してプロパティを取得する: Type.GetProperty を使用して、プロパティのメタデータを取得します。プロパティがパブリックでない場合は、バインド フラグが必要になる場合があります。
  2. SetValue 経由で値を設定する: 取得したプロパティで SetValue メソッドを呼び出して、必要な値を割り当てます。 SetValue を呼び出すには、オブジェクト インスタンスが必要です。

提供されているコード サンプルは、このアプローチの例です。

class Person
{
    public string Name { get; set; }
}

class Test
{
    static void Main(string[] arg)
    {
        Person p = new Person();
        var property = typeof(Person).GetProperty("Name");
        property.SetValue(p, "Jon", null);
        Console.WriteLine(p.Name); // Jon
    }
}

プロパティのアクセシビリティが非公開の場合は、次のように BindingFlags を指定します。

var property = typeof(Person).GetProperty("Name", BindingFlags.NonPublic | BindingFlags.Instance);

リフレクションを利用すると、プロパティ値を動的に設定することが実現可能な試みになります。コード操作と実行時の動作に柔軟性をもたらします。

以上がリフレクションを使用して C# でプロパティ値を動的に設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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