Анализ кода CA1063 срабатывает при выводе из IDisposable и обеспечении реализации в базовом классе

У меня есть код, который вызовет предупреждение анализа кода CA1063:

CA1063: Microsoft.Design: Удалите IDisposable из списка интерфейсов, реализованных в «Функциональности», и вместо этого переопределите реализацию Dispose базового класса.

Однако я не уверен, что мне нужно сделать, чтобы исправить это предупреждение.

Вкратце у меня есть интерфейсIFunctionality что вытекает изIDisposable, КлассFunctionality инвентарьIFunctionality но происходит от классаReusable чтобы иметь возможность повторно использовать код сома. КлассReusable также происходит отIDisposable.

public class Reusable : IDisposable {

  ~Reusable() {
    Dispose(false);
  }

  public void Dispose() {
    Dispose(true);
    GC.SuppressFinalize(this);
  }

  protected virtual void Dispose(Boolean disposing) {
    // ...
  }

  public void DoSomething() {
    // ...
  }

}

public interface IFunctionality : IDisposable {

  void DoSomething();

  void DoSomethingElse();

}

public class Functionality : Reusable, IFunctionality {

  public void DoSomethingElse() {
    // ...
  }

#if WORK_AROUND_CA1063
  // Removes CA1063
  protected override void Dispose(Boolean disposing) {
    base.Dispose(disposing);
  }
#endif

}

Я могу избавиться от предупреждения, переопределивDispose наFunctionality и вызывая базовый классDispose хотя это не должно изменить семантику кода.

Так есть что-то оIDisposable в этом контексте я упустил из виду или это просто CA1063, который пропускает зажигание для этой конкретной конструкции?

Я знаю, что могу подавить CA1063, но правило довольно широкое, и я не хочу пропустить какие-либо другие проблемы в реализацииIDisposable сообщается по этому правилу.

Ответы на вопрос(3)

Ваш ответ на вопрос