Я обнаружил, что атрибуты в C# кажутся ленивыми.Почему атрибуты лениво создаются?
[A(123)]
class A : Attribute
{
public A(int b)
{
GetType().GetCustomAttributes(true);
}
}
В этом примере, создавая новый экземпляр A
вызывает StackOverflowException
, но если удалить вызов GetCustomAttributes()
, то выполнение продолжает нормально.
Почему это? Мне кажется, что атрибуты правильно инициализируются, когда класс, который они украшают.
Что значит для инициализации класса? Когда вы думаете, что это происходит? – Gabe