Здесь действительно два вопроса
Можно ли вообще применять атрибуты к классу, методу или свойствам?
Да, атрибуты могут быть действительными для любогоиз этих конструкций (и многих других)
Допустимо ли это для определенного атрибута?
Это зависит от конкретного атрибута.Атрибуты могут контролировать, к каким конструкциям они могут быть применены с помощью перечисления AttributeTargets
, и, следовательно, делают недопустимым применение определенного атрибута к определенной конструкции.
Например, ParamArrayAttribute
может предназначаться только для параметров, в то время как ObsoleteAttribute
может предназначаться для почти всего (кроме сборок и, возможно, еще одного, которого я пропускаю)