私は、C# の属性が遅延インスタンス化されているように見えることを発見しました。
[A(123)]
class A : Attribute
{
public A(int b)
{
GetType().GetCustomAttributes(true);
}
}
この例では、新しいA
インスタンスを作成するStackOverflowException
と が発生しますが、 への呼び出しを削除するとGetCustomAttributes()
、実行は正常に続行されます。
どうしてこれなの?装飾するクラスが適切である場合、属性が適切に初期化されることは、私にとってより理にかなっています。