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

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

DDD
DDDオリジナル
2025-01-05 08:03:42915ブラウズ

How Can I Set Property Values Dynamically in C# Using Reflection?

リフレクションを使用したプロパティ値の設定

C# ではリフレクションを使用してプロパティの値を動的に設定することができます。これにより、オブジェクトのアクセシビリティや可視性に関係なく、実行時にオブジェクトのプロパティを変更できます。

リフレクションを使用してプロパティ値を設定するには、次の手順に従います。

  1. PropertyInfo オブジェクト: Type.GetProperty を使用して、変更するプロパティに関連付けられた PropertyInfo オブジェクトを取得します。プロパティがパブリックでない場合は、BindingFlags.NonPublic や BindingFlags.Instance などの追加のバインディング フラグを指定する必要がある場合があります。
  2. SetValue メソッドを呼び出します。 PropertyInfo オブジェクトを取得したら、 SetValue メソッドを呼び出して、実際にプロパティの値を設定します。このメソッドは、変更するオブジェクト インスタンスと設定する新しい値の 2 つのパラメーターを受け取ります。

次に、リフレクションを使用して Person クラスの firstName プロパティを設定する方法を示す例を示します。

using System;
using System.Reflection;

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

class Test
{
    static void Main(string[] args)
    {
        // Create an instance of the Person class
        Person p = new Person();

        // Get the PropertyInfo object for the FirstName property
        var property = typeof(Person).GetProperty("FirstName");

        // Set the value of the FirstName property using reflection
        property.SetValue(p, "John", null);

        // Print the value of the FirstName property
        Console.WriteLine(p.FirstName); // John
    }
}

この例では、プロパティ変数は、Person クラスの FirstName プロパティへの参照を保持します。 SetValue メソッドは、p インスタンスと文字列値「John」を使用して呼び出され、プロパティの値を動的に設定します。

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

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