Рассмотрим этот сценарий:
public class C
{
private int _foo;
public int Foo
{
get { return _foo; }
[Obsolete("Modifying Foo through the setter may corrupt hash tables. "
+ "Consider using the method 'ModifyFoo' instead.")]
set { _foo = value; }
}
public C ModifyFoo( int foo )
{
// return a new instance of C
}
}
Который не компилируется:
ошибка CS1667: атрибут «Устаревший» недопустим для свойств или средств доступа к событиям. Он действителен только для объявлений класса, структуры, перечисления, конструктора, метода, свойства, индексатора, поля, события, интерфейса, делегата.
Применение атрибутов к определенным методам доступа прекрасно подходит для любого другого атрибута (при условии, что AttributeTargets.Method
установлен в его использовании, что верно для ObsoleteAttribute
).