属性パラメータを動的に変更する
特定のシナリオでは、実行時に属性のパラメータを変更する必要がある状況が発生することがあります。通常、属性は静的であり、クラスまたはプロパティに適用された後は変更できません。ただし、属性インスタンス自体を操作することでこの機能を実現する方法があります。
サードパーティ ベンダーが提供する次の UserInfo クラスについて考えてみましょう。
public class UserInfo { [Category("change me!")] public int Age { get; set; } [Category("change me!")] public string Name { get; set; } }
これらのカテゴリを変更する意図があるにもかかわらず、ベンダーの制限により直接変更することはできません。この問題を回避するには、次の手法を使用できます。
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);
attrs[0].Category = "My Newカテゴリ";
Console.WriteLine(attrs[0].Category ); // "My New category" を出力します
属性インスタンスを直接操作することで、実行時にそのパラメーターの値を動的に変更できます。これにより、ベンダーが提供する元のコードを変更せずに、UserInfo クラスのカテゴリ名を変更できます。
以上が実行時に属性パラメータを動的に変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。