Является ли изменение метода с абстрактного на виртуальный в базе критическим изменением для дочерних классов
У меня есть абстрактный класс, который реализует смесь виртуальных и абстрактных методов. Один из методов, который был создан как абстрактный, действительно должен быть виртуальным, поскольку существует реализация по умолчанию. Мой вопрос заключается в том, что, поскольку метод полностью готов к перезаписи в любых исключающих дочерних классах, изменение метода с абстрактного на виртуальный будет разрушительным изменением? Смотреть ниже.
Хотел бы изменить это.
public abstract class MyBaseClass { public MyBaseClass(); public abstract void DoTask(); }
До настоящего времени
public abstract class MyBaseClass { public MyBaseClass(); public virtual void DoTask() { //Do defauld task or override me. } }
влияют ли все дочерние классы, полностью готовые к наследованию от MyBaseClass?
Что я уже пробовал:
Я попытался протестировать это в самой простой форме, но меня беспокоит сценарий более сложный, чем ниже, о котором я не думаю?
public abstract class Class1 { public string s; public Class1() { } public virtual void DoTask(); } public abstract class Class1 { public string s; public Class1() { } public virtual void DoTask() { s = "in class one"; } } public class Class2: Class1 { public Class2() { } public override void DoTask() { s = "in class two"; } }