Анализ кода 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
сообщается по этому правилу.