ホームページ >バックエンド開発 >C++ >C# で実行時に属性パラメーター値を動的に変更するにはどうすればよいですか?

C# で実行時に属性パラメーター値を動的に変更するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-30 01:27:18829ブラウズ

How Can I Dynamically Change Attribute Parameter Values at Runtime in C#?

属性パラメータの動的変更

特定のシナリオでは、より正確な情報またはカスタマイズされた情報を提供するために、実行時に属性パラメータを調整する必要がある場合があります。 。次の例を考えてみましょう。

public class UserInfo
{
    [Category("change me!")]
    public int Age
    {
        get;
        set;
    }
    [Category("change me!")]
    public string Name
    {
        get;
        set;
    }
}

上記のようなサードパーティ クラスがあり、そのコードを変更できないとします。しかし、「私を変えてください!」ということに気づきました。カテゴリ名が不正確なので、動的に更新したいと考えています。

幸いなことに、リフレクションを通じて属性オブジェクトに直接アクセスすることで、実行時に属性インスタンス値を変更できます。

方法は次のとおりです:

  1. 属性を取得しますインスタンス:
ASCII[] attrs1 = (ASCII[])typeof(MyClass).GetCustomAttributes(typeof(ASCII), false);
  1. 属性インスタンスのパブリック変数を変更します:
attrs1[0].MyData = "A New String";
  1. 変更された値を表示します:
MessageBox.Show(attrs1[0].MyData);
  1. 別のインスタンスを作成して変更を確認しますローカルです:
ASCII[] attrs3 = (ASCII[])typeof(MyClass).GetCustomAttributes(typeof(ASCII), false);
MessageBox.Show(attrs3[0].MyData);

以上がC# で実行時に属性パラメーター値を動的に変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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