【问题标题】:Accessing enum in data access layer在数据访问层访问枚举
【发布时间】:2015-07-16 10:56:11
【问题描述】:

有没有什么方法可以在不引用实际项目的情况下使用/访问数据访问层项目中包含的枚举(以便尝试将某些事物分开)?

例如,我有一个项目说UI,它引用了一个项目说MIDDLEMAN,另一个项目说DAL。如果我的UI 引用了MIDDLEMAN,而DAL 又引用了包含枚举的DAL,我可以从UI 访问枚举吗?

【问题讨论】:

  • 请提供更多细节。如果您需要在 DAL 中指定实际的枚举,您希望它如何在不引用声明项目的情况下工作?
  • 您可以创建单独的“界面”项目,其中仅包含共享部分..
  • @jonSkeet 已编辑
  • @rudolf_franek 有一个很好的解决方案:显然 DAL 应该只通过接口向 MIDDLEMAN 公开它的类,所以将这些和枚举移到 COMMON 并允许所有三个访问它。

标签: c# enums data-access-layer


【解决方案1】:

如果我在 n 层层程序上工作,我通常会创建一个项目名称“DataTypes”,用于存储通过任何其他层项目的任何共享数据。

所以我可以将枚举或“数据类”包含到需要使用它们的项目中,而不需要复制它们或将 ref 从一个项目层添加到另一个。

【讨论】:

    【解决方案2】:

    你基本上有两种选择:

    首先是创建一个单独的项目,其他层都可以从中访问和使用枚举。如果您这样做,请确保该项目尽可能简单。我的意思是小心不要在那里添加与其他项目直接相关的逻辑,这会产生不需要的依赖关系。

    您的另一个选择是在MiddleMan 层中创建一个类似的枚举,并将DAL 层中的枚举映射到这个新的枚举。由于您的 UI 可以引用MiddleMan,它应该能够使用这个新的枚举,同时仍然保持较低级别的枚举遥不可及。然后必须在映射逻辑中调整对较低级别枚举的任何更改。

    【讨论】:

    • 我想我想知道你是否可以通过中间项目保留实际的枚举,但听起来这是不可能的
    【解决方案3】:

    您可以将枚举移动到一个单独的项目中,并将其添加到您不想合并的两个项目中:)

    【讨论】:

    猜你喜欢
    • 2015-01-29
    • 1970-01-01
    • 2011-07-09
    • 2013-04-10
    • 2011-07-03
    • 2018-01-09
    • 2020-07-04
    • 1970-01-01
    • 2019-04-27
    相关资源
    最近更新 更多