в дополнение к упомянутым;
AttributeUsageAttribute
имеет специальную поддержку компилятора, поскольку она ограничивает (при компиляции), как вы можете применять атрибуты
ObsoleteAttribute
также используется компилятором для предупреждения или ошибки использования.
Я подозреваю , однако, технически вы могли бы написать все это самостоятельно - до тех пор, пока вы пишете свои собственные библиотеки libarary и System.dll; p Компилятор обычно ищет шаблон / подпись , так как он должен обслуживать разные среды выполнения - и действительно, вам не нужно использовать основные библиотеки MS. Однако поведение определяется компилятором, а не классом, поэтому вы не можете заставить его делать что-то другое.