我有一个获取不同类型的IEnumerable
的存储库。
我可以使用以下方法做到这一点:
switch (returnType)
{
case ReturnType.HR:
_repo.GetSystemManuals();
break;
case ReturnType.Finance:
_repo.GetPrivateRecords();
break;
case ReturnType.Dev:
_repo.GetTimeLine();
break;
case ReturnType.Admin:
_repo.GetLedger();
break;
case ReturnType.Support:
_repo.GetRoster();
break;
}
但这违反了SOLID原则的开/关。
我在想的方法之一就是创建一个字典,
private static readonly IDictionary<S95Type, IQueryable<Customer>> ReqTypeMapper
= new Dictionary<S95Type, IQueryable<HR>>();
ReqTypeMapper.Add(ReturnType.HR, _repo.GetHR()());
但不确定如何使用不同的返回类型执行不同的方法。
最佳答案
我认为您应该重新考虑您的设计并为每种类型创建一个存储库。
从定义上说,储备库不应处理许多不同的实体。
那将是一个干净且可维护的解决方案。