Не знаю, сработает ли это, но стоит попробовать.
Вы не можете расширить устаревшее, потому что оно окончательно, но, возможно, вы можете создать свой собственный атрибут и пометить этот класс как устаревший:
[Obsolete("Should be refactored")]
public class MustRefactor: System.Attribute{}
Затем, когда вы помечаете свои методы атрибутом "MustRefactor", могут отображаться предупреждения о компиляции.
Я сказал "возможно" и "мог", потому что я не пробовал это. Пожалуйста, скажите мне, если это не сработает, поэтому я удалю ответ.
Привет!
ОБНОВЛЕНИЕ: Протестировано. Он генерирует предупреждение о времени компиляции, но сообщение об ошибке выглядит забавно, вы должны увидеть его сами и выбрать. Это очень близко к тому, чего вы хотели достичь.
UPDATE2:
С этот код генерирует это предупреждение (не очень хорошо, но я не думаю, что есть что-то лучше).
public class User
{
private String userName;
[TooManyArgs] // Will show warning: Try removing some arguments
public User(String userName)
{
this.userName = userName;
}
public String UserName
{
get { return userName; }
}
[MustRefactor] // will show warning: Refactor is needed Here
public override string ToString()
{
return "User: " + userName;
}
}
[Obsolete("Refactor is needed Here")]
public class MustRefactor : System.Attribute
{
}
[Obsolete("Try removing some arguments")]
public class TooManyArgs : System.Attribute
{
}