如何从域层禁用 UI 中的枚举值
How to disable enum value in UI from domain layer
我有一个应用程序,其中域和用户界面是单独的层。两者都可以访问在基础设施层中定义的一些枚举。不同的团队在不同的层上工作。
枚举的某些值在域中还没有完全实现的代码,或者可能在应用程序的试用版中被禁用。我想做的是在 UI 的下拉菜单中显示这些值,但在域代码完全实现之前禁用它们。届时不需要在 UI 层中进行任何额外的工作,因此领域团队可以简单地启用它。
实现此目标的最佳方法是什么?
我可以在枚举值上设置属性吗?
我需要在 DTO 上指定它还是在 DTO 的映射器上指定它?
还有别的吗?
不担心UI部分怎么做,只担心如何将信息传递给UI。不是问一个实现本身,而是一个概念。对于它的价值,后端是 C#,前端是 HTML5,使用 MVC.NET、WCF、Unity 的 MVVM。
您可以为您的枚举创建一个自定义属性,并根据环境对属性进行过滤。不过我不确定这是好事还是坏事。
我想出来了,其实很简单。
您确实可以将属性添加到单个枚举值(与更常见的枚举本身相反)并且这些不需要自定义,尽管它们可以。
MSDN 有可用属性的完整列表here。
我最终使用了这个:
[EditorBrowsableAttribute(EditorBrowsableState.Never)]
其中 EditorBrowsableState.Never
用于那些尚未实现并更改为 EditorBrowsableState.Always
的枚举值。
我有一个应用程序,其中域和用户界面是单独的层。两者都可以访问在基础设施层中定义的一些枚举。不同的团队在不同的层上工作。
枚举的某些值在域中还没有完全实现的代码,或者可能在应用程序的试用版中被禁用。我想做的是在 UI 的下拉菜单中显示这些值,但在域代码完全实现之前禁用它们。届时不需要在 UI 层中进行任何额外的工作,因此领域团队可以简单地启用它。
实现此目标的最佳方法是什么?
我可以在枚举值上设置属性吗?
我需要在 DTO 上指定它还是在 DTO 的映射器上指定它?
还有别的吗?
不担心UI部分怎么做,只担心如何将信息传递给UI。不是问一个实现本身,而是一个概念。对于它的价值,后端是 C#,前端是 HTML5,使用 MVC.NET、WCF、Unity 的 MVVM。
您可以为您的枚举创建一个自定义属性,并根据环境对属性进行过滤。不过我不确定这是好事还是坏事。
我想出来了,其实很简单。
您确实可以将属性添加到单个枚举值(与更常见的枚举本身相反)并且这些不需要自定义,尽管它们可以。
MSDN 有可用属性的完整列表here。
我最终使用了这个:
[EditorBrowsableAttribute(EditorBrowsableState.Never)]
其中 EditorBrowsableState.Never
用于那些尚未实现并更改为 EditorBrowsableState.Always
的枚举值。