首先:
public static String ConvertServerToClientAdapter(String adapterServer)
{
string temp = adapterServer.Substring(0, adapterServer.IndexOf("/"));
switch (temp)
{
case "f":
{
return "FA";
}
case "g":
{
return "Gi";
}
case "s":
{
return "SE";
}
case "a":
{
return "ATM";
}
default:
return null;
}
}
第二
public static String ConvertClientToServerAdapter(String adapterClient)
{
switch (adapterClient)
{
case "FA":
{
return "f";
}
case "Gi":
{
return "g";
}
case "SE":
{
return "s";
}
case "ATM":
{
return "a";
}
default:
return null;
}
}
答案 0 :(得分:4)
您可以将字符串对存储在字典中。这将减少代码中两个位置的重复,即'a'与'ATM'配对。
对于正向转换,只需索引字典。 return _dict[adapterServer];
。
编辑:如果你想为无效输入返回null,而不是抛出异常,那么它应该是TryGetValue。
对于后退,请使用linq:
return _dict.Elements.FirstOrDefault(e => e.Value == adapterClient).Key);
你可以根据更频繁使用的内容交换前进/后退,前向字典索引比linq更快。
答案 1 :(得分:1)
public static String Convert(String input)
{
if (input.Contains("/"))
switch (input.Substring(0, adapterServer.IndexOf("/")))
{
case "f":
return "FA";
case "g":
return "Gi";
case "s":
return "SE";
case "a":
return "ATM";
default:
return null;
}
}
else
switch (adapterClient)
{
case "FA":
return "f";
case "Gi":
return "g";
case "SE":
return "s";
case "ATM":
return "a";
default:
return null;
}
}
答案 2 :(得分:0)
你拥有的是地图数据结构,但不幸的是.net没有提供。如果你真的担心做这种事情,你可以google一个现成的地图。您也可以实现自己的:从一个通用的Dictionary开始并覆盖所有方法以确保“值”方是唯一的,并为“反向”查找添加第二个索引器属性jdv-Jan de Vaan的解决方案接近于此!
答案 3 :(得分:-1)
public static String ConvertServerToClientAdapter(String adapterServer)
{
switch (adapterServer.Substring(0, adapterServer.IndexOf("/")))
{
case "f":
{
return "FA";
}
case "g":
{
return "Gi";
}
case "s":
{
return "SE";
}
case "a":
{
return "ATM";
}
default:
{
switch (adapterClient)
{
case "FA":
{
return "f";
}
case "Gi":
{
return "g";
}
case "SE":
{
return "s";
}
case "ATM":
{
return "a";
}
default:
return null;
}
}
}
}