カスタム属性のInheritedプロパティ(その2)

attrにはProxyによる拡張前の型が、元々持っていたカスタム属性を取得することができた。あとはメソッドやプロパティ毎に設定されたカスタム属性が取得できれば完璧だ。

他のカスタム属性も同じだった。例えばメソッドに設定するためのアスペクトを指定するカスタム属性"AspectAttribute"だったとすれば、AttributeUsageのInheritedプロパティを、型と同様にtrue設定すれば良い。

[AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class AspectAttribute : Attribute
{〜

これで、実行時には型からメンバ情報を引き、型と同様にカスタム属性を取得できる。

Type.GetType(プロキシで拡張された型名).GetMethod(対象のメソッド名).GetCustomAttributes(true);

DynamicProxyによる動的に拡張された型は、後々カスタム属性によるインジェクションの指定を処理する場合でも使えることが明らかになった。