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

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

DDD
リリース: 2025-01-02 17:09:40
オリジナル
289 人が閲覧しました

How Can I Dynamically Modify Attribute Parameters at Runtime?

属性パラメータを動的に変更する

特定のシナリオでは、実行時に属性のパラメータを変更する必要がある状況が発生することがあります。通常、属性は静的であり、クラスまたはプロパティに適用された後は変更できません。ただし、属性インスタンス自体を操作することでこの機能を実現する方法があります。

サードパーティ ベンダーが提供する次の UserInfo クラスについて考えてみましょう。

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

    [Category("change me!")]
    public string Name
    {
        get;
        set;
    }
}
ログイン後にコピー

これらのカテゴリを変更する意図があるにもかかわらず、ベンダーの制限により直接変更することはできません。この問題を回避するには、次の手法を使用できます。

  1. 属性インスタンスの取得:

CategoryAttribute[] attrs = (カテゴリ属性[]) typeof(UserInfo)</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">.GetProperty("Age").GetCustomAttributes(typeof(CategoryAttribute), false);
ログイン後にコピー
  1. パラメータを変更します:

attrs[0].Category = "My Newカテゴリ";

  1. 変更の検査:

Console.WriteLine(attrs[0].Category ); // "My New category" を出力します

属性インスタンスを直接操作することで、実行時にそのパラメーターの値を動的に変更できます。これにより、ベンダーが提供する元のコードを変更せずに、UserInfo クラスのカテゴリ名を変更できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート