Я хочу явно реализовать метод интерфейса в базовом классе.
Помимо этого, я хотел сделать этот метод виртуальным, чтобы я мог переопределить его в производном классе, но явно реализованные методы не позволяют этого.
Я попытался создать защищенный виртуальный метод в базе, вызвав его из метода интерфейса и затем переопределив этот метод в производном классе.Кажется, это работает, но FxCop жалуется на правило CA1033 «Методы интерфейса должны вызываться дочерними типами».
(Мой базовый класс реализует интерфейс, производный класс - нет.)
Какя должен улучшить этот (сокращенный) код, чтобы он был более правильным, или я должен просто игнорировать FxCop в этом случае?
В базовом классе:
protected virtual string ConstructSignal()
{
return "Base string";
}
#region ISignal Members
string ISignal.GetMessage()
{
this.ConstructSignal();
}
#endregion
В производном классе:
protected override string ConstructSignal()
{
return "Derived string";
}
В конце концов решил неявно реализовать методы интерфейса, что по-прежнему работает и поддерживает FxCop.