この質問に答えType.GetCustomAttributes(true)
て、属性が定義されているインターフェイスを実装するクラスで使用しようとしました。GetCustomAttributes
インターフェイスで定義された属性が返されないことに驚きました。なぜそうしないのですか?インターフェイスは継承チェーンの一部ではありませんか?
サンプルコード:
[Attr()]
public interface IInterface { }
public class DoesntOverrideAttr : IInterface { }
class Program
{
static void Main(string[] args)
{
foreach (var attr in typeof(DoesntOverrideAttr).GetCustomAttributes(true))
Console.WriteLine("DoesntOverrideAttr: " + attr.ToString());
}
}
[AttributeUsage(AttributeTargets.All, Inherited = true)]
public class Attr : Attribute
{
}
出力: なし