2013-05-15 39 views
1

我的意思是,如果我們從某個服務中獲得錯誤代碼300,並且需要將它映射到我們自己的內部錯誤代碼(比如450),那麼最好的方法是什麼做這件事。將外部錯誤代碼映射到內部代碼的最佳方法

當前系統使用常數來跟蹤內部的錯誤:

public const string ERROR_SOME = "450"; public const string ERROR_ANOTHER = "460";... 

所以我想只是有另一套用於外部錯誤常量,然後有功能映射兩種:

public const string EXT_ERROR_SOME = "300"; 
public const string EXT_ERROR_ANOTHER = "800"; 
... 
public string MapError(string externalError) 
{ 
    if(externalError == EXT_ERROR_SOME) // can be a switch statement 
     return ERROR_SOME; 
    else if (externalError == EXT_ERROR_ANOTHER) 
     return ERROR_ANOTHER; 
    ... 
} 

現在的問題是:「有沒有更好的方法」?

+3

一個'詞典<字符串,字符串>',也許? – Ryan

回答

1

你可以使用一個Dictionary<string, string>

private readonly var errorMap = new Dictionary<string, string>() { 
    {EXT_ERROR_SOME, ERROR_SOME}, 
    ⋮ 
}; 

public string MapError(string externalError) 
{ 
    return errorMap[externalError]; 
} 
0

不是C#的問題,而只是一個架構問題。我不會用任何語言把它放在任何代碼中,而是將整個地圖完全外化(只要它不僅僅是這一對)。並使它有點「完整」像

"external code : internal code : msg ID" 

下一個

"language : msg ID : user friendly hint .... " 

等,有幾個庫於各種用途出有這樣做的,即使是在C#。

相關問題