我有一个获取不同类型的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()());


但不确定如何使用不同的返回类型执行不同的方法。

最佳答案

我认为您应该重新考虑您的设计并为每种类型创建一个存储库。
从定义上说,储备库不应处理许多不同的实体。
那将是一个干净且可维护的解决方案。

10-08 02:22