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