実行時属性のカスタマイズ
開発では、サードパーティ ベンダーによって課された制限にもかかわらず、実行時に属性を変更する必要がある状況が発生します。次のような属性を持つクラスを考えてみます。
public class UserInfo { [Category("change me!")] public int Age { get; set; } [Category("change me!")] public string Name { get; set; } }
実行時のインスタンスの変更
認識に反して、属性インスタンスは実行時に変更できます。属性インスタンスを取得することで、次のような値の変更を行うことができます。
ASCII[] attrs1 = (ASCII[]) typeof(MyClass).GetCustomAttributes(typeof(ASCII), false); attrs1[0].MyData = "A New String"; MessageBox.Show(attrs1[0].MyData);
変更されていない属性値の保持
属性インスタンスを取得するための後続の呼び出しでは、実行時の変更の影響を受けません:
ASCII[] attrs3 = (ASCII[]) typeof(MyClass).GetCustomAttributes(typeof(ASCII), false); MessageBox.Show(attrs3[0].MyData); // Original value
以上が.NET ランタイム属性を動的に変更できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。