リフレクションは文字列入力からプロパティ値を変更できますか?
C# でリフレクションを利用すると、プロパティを含むクラスのプライベート メンバーにアクセスできます。これにより、アクセス制限にもかかわらず、これらのプロパティの基になる値を操作できるようになります。
例: プロパティ値を反射的に設定する
次のコードを考えてみましょう:
string propertyName = "first_name"; // Assume there's a property named first_name in the class
リフレクションを使用してこのプロパティの値を設定するには、次のようにします手順:
Reflection を使用してプロパティ情報を取得します:
Type propertyType = typeof(TargetClass); PropertyInfo propertyInfo = propertyType.GetProperty(propertyName, BindingFlags.NonPublic | BindingFlags.Instance);
SetValue メソッドを使用してプロパティを変更しますvalue:
object targetObject = new TargetClass(); propertyInfo.SetValue(targetObject, "New Value", null);
注: 上記の例では、TargetClass は first_name プロパティを含むクラスを表します。プライベートまたは保護されたプロパティにアクセスするには、それに応じて GetProperty() の BindingFlags を調整します。
以上がC# リフレクションは文字列からプライベート プロパティ値を変更できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。