如何从域层禁用UI中的枚举值

时间:2015-01-02 16:24:29

标签: c# enums domain-driven-design

我有一个应用程序,其中域和用户界面是单独的层。两者都可以访问基础结构层中定义的一些枚举。不同的团队在不同的层面上工作。

枚举的某些值在域中尚未完全实现,或者可能在应用的试用版中被禁用。我想要做的是在UI的下拉菜单中显示这些值,但在域代码完全实现之前禁用它们。此时,UI层中不需要任何其他工作,因此域团队可以简单地启用它。

实现这一目标的最佳方法是什么?

  • 我可以在枚举值上设置一个属性吗?

  • 我是否需要在DTO或映射器上将其指定给DTO?

  • 别的什么?

不担心如何处理UI部分,只关心如何将信息传递给UI。不询问实现本身,而是一个概念。对于它的价值,后端是C#,前端是HTML5,MVVM使用MVC.NET,WCF,Unity。

2 个答案:

答案 0 :(得分:1)

我弄清楚它实际上非常简单。

您确实可以将属性添加到单个枚举值(与枚举本身相比更为常见),并且这些属性不需要自定义,尽管它们可以。

MSDN拥有可用属性的完整列表here

我最终使用了这个: [EditorBrowsableAttribute(EditorBrowsableState.Never)]

EditorBrowsableState.Never用于那些尚未实现的枚举值,并在EditorBrowsableState.Always更改为{{1}}时。

答案 1 :(得分:0)

您可以为枚举创建自定义属性,并根据环境过滤属性。我不确定这是好事还是坏事。