我有一个存储库,它获取不同类型的 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()());
但不确定如何使用不同的返回类型执行不同的方法..
最佳答案
我认为您应该重新考虑您的设计并为每种类型创建一个存储库。 根据定义,存储库不应处理许多不同的实体。 这将是一个干净且可维护的解决方案。
关于c# - 检查枚举和调用存储库方法的更好方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48439973/