我有以下枚舉:C# - 幫助與[國旗]枚舉和擴展方法
[Flags]
public enum PostAssociations
{
None = 0x0,
User = 0x1,
Comments = 0x2,
CommentsUser = 0x3
}
一開始的音符,即時通訊不知道這些標誌是正確的。
我這樣做,以便我有一個流利的方式來定義實體框架的「包含」(因爲EF包含方法需要一個字符串,我不想暴露給用戶界面)。
所以我想它,所以我的服務層可以接受PostAssociations,並在我的服務層我利用擴展方法將其轉換爲字符串[]。 (我的回購然後分裂爲了做包括)。
我沒有用Flags Enum做很多事情,所以我爲我的無知道歉。 :)
這是一個「真值表」什麼,我想(枚舉值,變換的串[])
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" }
不能有CommentsUser沒有評論。
所以我需要三樣東西幫助:
- 如何設置枚舉匹配真值表?
- 如何爲這些示例之一調用服務層?
- 如何編寫擴展方法將該枚舉轉換爲字符串數組?
當然,如果你們可以想出一個更好的方式來做我即將做的事情,我也會考慮。本質上,我試圖掩蓋EF後面的Enum的「魔術字符串」,考慮到你可以做多個包含(或沒有),我認爲這是Flags Enum的一個好例子。
謝謝你們。
好,首先,'0x3'絕對不是** **正確的值,除非你的意思是'CommentsUser'代表'User'和'Comments'之間的聯合,我懷疑你實際上並不想要。 – 2010-10-06 00:24:01
你是什麼意思,你不能評論用戶沒有評論? – 2010-10-06 00:24:52
@Kirk Woll - 不,那不是我想要的。正如我所說,我沒有使用枚舉標誌的經驗 - 我不知道標誌使用什麼值。在這個階段,我要和一系列PostAssociations(而不是標誌)一起去,除非有人想出答案。 – RPM1984 2010-10-06 00:25:44