我有以下情形,但有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
。
看來愚蠢的有4個版本的本質上是相同的方法,但不同型號/回購,當我知道所有4個有我需要調用的屬性和回購的方法。
我想我需要重構這個使用泛型,但我甚至不知道從哪裏開始。使用
我已經包括了簡單的例子,我將如何重構4種方法爲一個通用的方法是什麼?
待辦事項'MasterPerson'和'ExceptionPerson'有一個共同的基類? – Lee
沒有他們不,他們都有自己的接口,但是這是爲DI – JsonStatham
我會做一個'Person'普通類,並使用了'MasterPerson'和'ExceptionPerson' –