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

How to disable enum value in UI from domain layer

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

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

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

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

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

我想出来了,其实很简单。

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

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

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

其中 EditorBrowsableState.Never 用于那些尚未实现并更改为 EditorBrowsableState.Always 的枚举值。