У меня есть серия классов в проекте, которые делают по сути одно и то же, но на разных объектах. Из-за того, что некоторые из них были закодированы в разное время и разными людьми, в названиях есть некоторая непоследовательность. Я хочу обновить свой код таким образом, чтобы обеспечить некоторую согласованность не только в текущих объектах, но и в новых, которые будут созданы в будущем. Мое понимание программирования наводит меня на мысль, что мне нужен либо базовый класс, либо интерфейс, но я не могу понять, как заставить их работать. Методы, которые я хочу иметь:
internal BusinessObject MethodA(EntityObject entity)
internal Void MethodB(EntityContext context, BusinessObject obj, EntityObject entity)
Проблема, с которой я сталкиваюсь, заключается в том, что в каждом классе «BusinessObject» и «EntityObject» будут разными, например. в одном это может быть "CarObject и CarEntity", а в другом - "BusObject и BusEntity". Мне все еще нужны два метода, и я все еще хочу, чтобы они назывались MethodA и MethodB. Я просто хочу поменять местами фактические типы объектов в реализации. Сами реализации будут разными, потому что они используют разные объекты.
Я знаю типы объектов во время компиляции и должен иметь доступ к свойствам объектов, поэтому, если используются дженерики, мне нужно привести дженерик как правильный тип в реализации. Также реализация MethodA требует создания «нового» BusinessObject, т.е. «BusinessObject x = new BusinessObject()», если это имеет значение.
Я пытался использовать интерфейс с дженериками в методах, а также базовый класс с абстрактными методами, но я не смог понять, как заставить их работать.
Каков наилучший способ справиться с этим? Пример кода будет высоко оценен.