#c# #inheritance
Вопрос:
Я работаю над некоторым устаревшим кодом, который использует классы, методы и всевозможные шаблоны, которые не были разработаны для проверки. Я хотел бы создать модульные тесты для добавленных изменений, но я не хочу, чтобы функциональность базового класса вызывалась, если я предоставляю суррогат (методы базового класса обращаются к ресурсу базы данных).
То, что я хочу сделать, эффективно похоже на:
public override void DoSomething()
{
// Perform some custom logic before calling the base implementation
// ...
// ...
// The keyword base is not valid in this context
(BaseClassSurrogate ?? base).DoSomething();
// Some more custom logic
// ...
// ...
}
Возможно ли что-то подобное в C#, или есть альтернативный способ тестирования, который не требует сложного рефакторинга?
Ответ №1:
Вы не можете достичь этого таким образом, потому base.Xyz()
что и BaseClassSurrogate.Xyz()
в конечном итоге использовали бы другой ИЛ.
Вы можете достичь этого, как:
if (BaseClassSurrogate is null)
{
base.DoSomething();
}
else
{
BaseClassSurrogate.DoSomething();
}
Это действительно некрасиво, но я бы ожидал, что это сработает.