ホームページ >バックエンド開発 >C++ >C# リフレクションは文字列からプライベート プロパティ値を変更できますか?

C# リフレクションは文字列からプライベート プロパティ値を変更できますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-05 03:25:39629ブラウズ

Can C# Reflection Change Private Property Values from a String?

リフレクションは文字列入力からプロパティ値を変更できますか?

C# でリフレクションを利用すると、プロパティを含むクラスのプライベート メンバーにアクセスできます。これにより、アクセス制限にもかかわらず、これらのプロパティの基になる値を操作できるようになります。

例: プロパティ値を反射的に設定する

次のコードを考えてみましょう:

string propertyName = "first_name";
// Assume there's a property named first_name in the class

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

  1. Reflection を使用してプロパティ情報を取得します:

    Type propertyType = typeof(TargetClass);
    PropertyInfo propertyInfo = propertyType.GetProperty(propertyName, BindingFlags.NonPublic | BindingFlags.Instance);
  2. SetValue メソッドを使用してプロパティを変更しますvalue:

    object targetObject = new TargetClass();
    propertyInfo.SetValue(targetObject, "New Value", null);

注: 上記の例では、TargetClass は first_name プロパティを含むクラスを表します。プライベートまたは保護されたプロパティにアクセスするには、それに応じて GetProperty() の BindingFlags を調整します。

以上がC# リフレクションは文字列からプライベート プロパティ値を変更できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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