2013-05-15 40 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#。

相关问题