我有以下枚举:
[Flags]
public enum PostAssociations
{
None = 0x0,
User = 0x1,
Comments = 0x2,
CommentsUser = 0x3
}
作为开始,我不确定这些标志是否正确。
我这样做是为了让我有一种流畅的方式来定义实体框架的“包含”(因为 EF Include 方法需要一个字符串,我不想将它暴露给 UI)。
所以我想要它,以便我的服务层可以接受PostAssociations,并且在我的服务层中,我利用扩展方法将其转换为字符串 []。(我的回购然后为了做.Include而分裂)。
我对 Flags Enum's 做的不多,所以我为我的无知道歉。:)
这是我想要的“真值表”(枚举值,转换后的字符串 [])
None = null
User = new string[] { "User" }
Comments = new string[] { "Comments" }
User, Comments = new string[] { "User", "Comments" }
Comments, CommentsUser = new string[] { "Comments", "Comments.User" }
User, Comments, CommentsUser = new string[] { "User", "Comments", "Comments.User" }
不能有没有评论的评论用户。
所以我需要三件事的帮助:
- 如何设置枚举以匹配该真值表?
- 我如何为这些示例之一调用服务层?
- 如何编写扩展方法将该枚举转换为字符串数组?
当然,如果你们能想出一个更好的方法来做我想做的事情,我也会考虑的。本质上,我试图掩盖 Enum 后面的 EF Include 的“魔术字符串”,并且考虑到您可以执行多个包含(或不包含),我认为这对于 Flags Enum 来说是一个很好的例子。
多谢你们。