Можно ли предотвратить применение атрибута к данному методу (или классу), если еще один атрибут уже указан?
Например, я хотел бы исправить ошибку времени компиляции или предупреждение, если атрибут B
применяется к методу, в котором атрибут A
уже применен:
public class AttributeA : Attribute{}
public class AttributeB : Attribute{}
[A]
[B] // generates error or warning because of A
public void Foobar(){}
Я не думаю, что это возможно, но это стоит вопроса.
Это невозможно. Несколько месяцев назад я искал что-то похожее на то, что ObsoleteAttribute
делает, вызывая предупреждение компилятора для моего пользовательского атрибута, когда я сталкивался с этим ответом.