在我們的應用程序中,我們使用enum
作爲類型來定義特定Office活動中涉及的幹事,例如: 在安全活動中,涉及的角色可以是安全主管,控制主管,安全經理等...在C#/ SQLServer應用程序中按位填充全長
這個細節是完全可配置的,所以我們可以添加另一個官方角色的UI在我們的系統活動只需添加特定位bitwrise值,這個值存儲在一個字段Activity表,所有類型都存儲在一個sql表中;此字段使用一些存儲procudure,以及一些商業智能是基於這個領域
[Flags]
public enum eFatEnumBW : long
{
None = 0,
SecurityOfficer = 1L << 0,
SecurityAssistant = 1L << 1,
//...some referee of every type you can immagine
LastAssistantAtTheMoment = 1L << 63,
//...
}
現在我們的脂肪bitwise
enum
完全飽和,以及我們的客戶都recentely要求添加新類型官員的角色來管理的新活動。
我知道,這不是管理這種情況的最好方法,這個選擇從8年沒有問題到位,沒有人能想象事情會如何發展,現在我們正在等待完全改寫我們的應用程序,但同時我們必須繼續保持舊的應用程序而沒有什麼變化。
我認爲我們可以根據這個BW簡單地改變我們的long
在我們的代碼中使用ulong
,並且在SQL方面使用numeric(20,0)
,這可能會給我們很大的餘量。
在我的結論中有些東西我錯過了,這會導致解決方案不適用?
在此先感謝您的建議
'ulong'和'long'具有相同的位數,所以我沒有看到如何切換到'ulong'會讓您將額外的信息擠入您的標誌組合。 – dasblinkenlight
最多可以得到1位,但只要簡單地使用負值即可。 –
謝謝你的回答和評論 – InferOn