我需要的狀態值從外部源映射:映射外部狀態到內部狀態+提供多個「表示」的狀態
- 外部源狀態== 1 - >內部源狀態== 2 ==「NEW」
- 外部源狀態== 5 - >內部源狀態== 7 ==「處理過的」
所以,我有時需要表示內部狀態如整數或字符串..我認爲我應該在一個函數中做到這一點,因爲無論數據類型如何,狀態都代表着同樣的事情。
我的問題是,我創建一個函數,將外部源狀態作爲參數,然後返回一個鍵值對?我不想創建2個函數。
鉭,
瑜伽士
我需要的狀態值從外部源映射:映射外部狀態到內部狀態+提供多個「表示」的狀態
所以,我有時需要表示內部狀態如整數或字符串..我認爲我應該在一個函數中做到這一點,因爲無論數據類型如何,狀態都代表着同樣的事情。
我的問題是,我創建一個函數,將外部源狀態作爲參數,然後返回一個鍵值對?我不想創建2個函數。
鉭,
瑜伽士
首先創建一個表示內部狀態
public class InternalStatus
{
public int ID { get; set; }
public string Name { get; set; }
}
然後你可以通過外部ID爲重點
private Dictionary<int, InternalStatus> _map = new Dictionary<int, InternalStatus>();
構建一個字典類添加映射
_map.Add(1, new InternalStatus { ID = 2, Name = "NEW" });
_map.Add(5, new InternalStatus { ID = 7, Name = "PROCESSED" });
現在你可以看一下一個這樣的映射:
int externalStatusID = 5;
InternalStatus internalStatus;
if (_map.TryGetValue(externalStatusID, out internalStatus)) {
Console.WriteLine("Internal status ID = {0}, Name = {1}",
internalStatus.ID, internalStatus.Name);
} else {
Console.WriteLine("Status not found!");
}
你的數據在邏輯上是兩個不同的enum
類型相同的值映射到不同的整數:
public enum ExternalSourceStatus
{
NEW = 1,
PROCESSED = 5,
}
public enum InternalSourceStatus
{
NEW = 2,
PROCESSED = 7,
}
然後,您可以創建將外部狀態映射到內部狀態的字典:
var statusMap = new Dictionary<ExternalSourceStatus, InternalSourceStatus>()
{
{ExternalSourceStatus.NEW, InternalSourceStatus.NEW},
{ExternalSourceStatus.PROCESSED, InternalSourceStatus.PROCESSED},
};
(你可以在運行時建立這個字典,如果你的狀態是真的是大;對於足夠小的枚舉,它可能更容易就自己構建它。)
如果必須爲用戶生成文本輸出,則枚舉不適用。枚舉常量綁定到標識符的規則。例如。他們必須擁有PascalCasing,沒有空格等等。用戶輸出是文化特定的。 –
@ OlivierJacot-Descombes如果他實際上需要這種靈活性,那麼當然,這可能不是最好的選擇,但他可能並不處於他的應用要求的位置。 – Servy
Ta爲所有答覆夥計。我去與奧利維爾的。 –