我的意思是,如果我们从某个服务获得错误代码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;
...
}
问题是:“有更好的方法吗?”
答案 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#中也是如此。