c# - 检查枚举和调用存储库方法的更好方法是什么

标签 c# .net enums solid-principles

我有一个存储库,它获取不同类型的 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/

相关文章:

c# - 8 到 10 位数字的正则表达式

c# - 当 # 提供而不是时,如何在 C# 中分离查询字符串?

c# - WPF - 根据某些条件选择启动窗口

.net - 将 app.config 与类库一起使用

kotlin - kotlin 中 Enum.values() 和 enumValues() 的区别

c# - 使用 SOAP 编辑 : list<MyClass> 序列化包含列表<float[]> 的类

c# - 将 ICollection<T> 转换为 List<T>

.net - 为什么不总是使用泛型?

jsf - 如何测试 JSF 中的枚举相等性?

java - 为什么 java 枚举直到类回调被命中之后才构造?