将外部错误代码映射到内部代码的最佳方法

时间:2013-05-15 03:55:24

标签: c#

我的意思是,如果我们从某个服务获得错误代码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;
    ...
}

问题是:“有更好的方法吗?”

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

不是C#问题,而只是一个架构问题。我不会把它放在任何语言的任何代码中,但完全外化整个地图(只要它不仅仅是上面这一对)。并使其像“

”一样“完整”
"external code : internal code : msg ID"

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

等。有很多用于各种目的的库,即使在C#中也是如此。