Ответ 1

Вам нужно использовать атрибут [Obsolete].

Это пример:

[Obsolete("Not used anymore",true)]
public class MyDeprecatedClass
{
    //...
}

У вас нет параметров использования, они являются необязательными (перегруженный метод). Первый параметр по этой причине, а последний - пометить ошибку во время компиляции вместо предупреждения.

Ответ 2

В соответствии с Doak answer, но для второго параметра атрибута должно быть установлено значение false, если вы хотите, чтобы код компилировался:

[Obsolete("Not used anymore", false)]
public class MyDeprecatedClass
{
        //...
}

Это просто вызовет предупреждения.

Ответ 3

Причина, по которой не стирать класс и не осуждать, заключается в том, чтобы придерживаться некоторых "политик вежливости", когда ваш код является установленным API, а затем потребляется третьими лицами.

Если вы отказываетесь от стирания, вы предоставляете потребителям политику жизненного цикла (например, обслуживание и существование классов до версии X.X), чтобы позволить им планировать надлежащую миграцию в новый API.

Ответ 4

Если вы используете управление версиями, я бы рекомендовал просто удалить класс. Нет причин для использования неиспользуемого кода.

Контроль версий будет удобной отменой, если позже вы решите, что хотите класс.