我有幾個枚舉標誌,它們表示版本的外部系統。我想確保,每當外部系統升級其版本時,我的功能應該能夠支持它(我會提前知道該版本將升級,因此它是一種主動行動)。此外,我的通信必須與這個系統在兩個方向上進行,這意味着內部和外部通信可以有不同的版本集。十進制值/名稱的枚舉標誌轉換
我創建了一個枚舉標誌來表示這些版本。
[Flags]
public enum ExternalSystemVersionEnum
{
System1 = 1,
System2 = 2,
System3 = 4,
All = 7
}
這對正式的主要升級正常工作。可悲的是我不能將它們命名爲System1.0或更高版本。此外,作爲其小數,我不能使用泛型枚舉分析器。
(T) Enum.Parse(typeof (T), Convert.ToString(enumValue));
當然,我仍然可以通過使用開關/ if語句代替,但我真的想避免不惜一切任何硬編碼(甚至資源/ Contants如果我能)實現上述目標,作爲一個外部系統的版本可能會被完全丟棄,而且我不想爲追逐所有字符串而煩惱。
此外,我需要標誌或等效功能,因爲我仍然可以接收沒有系統版本標識,默認情況下進入到適用於所有版本通信。另一種通信可能僅適用於某些選擇版本,例如。只適用於2.0以後等
請注意,我可以通過使用Switch/If輕鬆實現此目的,但我不希望有任何硬編碼,除非沒有其他(簡單)方法。我的主要關注點是具有一個功能,的作用類似於標誌,但很容易標識具有小數位的值,比如1.0或1.2或1.3.1(儘管在歷史中它們從未有過小數點的兩倍) ,並提供編譯時間失敗。我願意接受其他機制的建議,但我更喜歡它是一個簡單的邏輯,因爲它是整個過程中非常微不足道的一部分。
什麼靜態類? 'public static class ExternalSystemVersionEnum { public static double System1 = 1.0; public static double System2 = 2.0; public static double System3 = 4。0; public static double All = 7; }' –
我不確定它是否具有與HasFlag檢查相同的功能。並不是說構建它非常複雜,而是避免了不必要的代碼並減少了維護。 但是,您能否請進一步解釋一下,因爲我可能沒有正確理解它? – touchofevil