У меня есть базовый класс для некоторого материала сменного стиля, и существуют некоторые методы, которые абсолютно требуются, чтобы быть реализованными.
Я в настоящее время объявляю тех, которые в базовом классе как виртуальный, например
public virtual void Save
{
throw new NotImplementedException();
}
и в потомке у меня есть a
public override void Save()
{
//do stuff
}
Действительно ли это - хорошая практика для броска a NotImplementedException
там? Порожденные классы могли, например, быть модулями для обработки различных форматов файлов.Спасибо
Обычно я ожидал, что ваш базовый класс будет абстрактным, и просто откладываю реализацию наследственным классам.
public abstract class MyBase
{
public abstract void Save();
...
}
public class MyChild : MyBase
{
public override void Save()
{
... save ...
}
...
}
абстракция кажется именно тем, что вам действительно нужно.
Не очень хорошая идея.
Обычно переопределяющие методы вызывают метод базового класса через
base.Save()
и это каждый раз вызывает рвоту.
В общем, плохая идея. В вашем случае, похоже, что сделать его абстрактным будет лучшим выбором.
Не лучше ли объявить его как абстрактный метод?
Таким образом, все реализующие типы также должны будут реализовать этот метод.