
実行時属性のカスタマイズ
開発では、サードパーティ ベンダーによって課された制限にもかかわらず、実行時に属性を変更する必要がある状況が発生します。次のような属性を持つクラスを考えてみます。
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 サイトの他の関連記事を参照してください。