я следующий сценарий, но с 4-мя способами и звонки вместо 2.рефакторинга несколько методов в один универсальный метод
RemoveNoLongerRequiredFromExceptions(newPeople, masterPeople);
RemoveNoLongerRequiredFromMaster(newPeople, exceptionPeople);
public void RemoveNoLongerRequiredFromMaster(List<NewPerson> newPeople,
List<MasterPerson> masterPeople)
{
var noLongerNewPeople = masterPeople.Where(a => !newPeople.Any(b =>
a.PerId == b.PerId && a.AddressId == b.AddressId));
foreach (var item in noLongerNewPeople)
{
_masterRepository.DeleteMasterPerson(item.MvpId);
}
}
public void RemoveNoLongerRequiredFromExceptions(List<NewPerson> newPeople,
List<ExceptionPerson> exceptionPeople)
{
var noLongerNewPeople = exceptionPeople.Where(a => !newPeople.Any(b =>
a.PerId == b.PerId && a.AddressId == b.AddressId));
foreach (var item in noLongerNewPeople)
{
_exceptionRepository.DeleteExceptionPerson(item.EvpId);
}
}
Единственное, что отличается о методах является второй входной параметр, однако каждый из них типы имеют требуемые свойства PerId
& AddressId
.
Кажется, что у daft есть 4 версии того, что по сути является одним и тем же методом, но с разными моделями/repos, когда я знаю, что все 4 имеют свойства и методы репо, которые мне нужно вызвать.
Я думаю, мне нужно реорганизовать это с помощью дженериков, но я даже не знаю с чего начать.
Используя простой пример, который я включил, как бы преобразовать 4 метода в один общий метод?
Do У «MasterPerson» и «ExceptionPerson» есть общий базовый класс? – Lee
Нет, они не имеют, у них обоих есть свои интерфейсы, но это было для DI – JsonStatham
. Я сделал бы обычный класс 'Person' и использовал его для' MasterPerson' и 'ExceptionPerson' –