【发布时间】:2015-01-19 23:44:00
【问题描述】:
您好,我有以下情况 - 我的数据库中有一个包含区域 URL 的表。对于代码中的每个区域 URL,我都会调用区域 URL 以获取令牌。令牌在 30 分钟后过期,因此我无法将其存储在数据库中。
所以我目前有一个如下的 switch 语句:
switch (zone)
{
case "https://dummy.url.zone1":
return _zoneOneToken;
case "https://dummy.url.zone2":
return _zoneTwoToken;
case "https://dummy.url.zone3":
return _zoneThreeToken;
default:
const string errorMessage = "Zone not found";
Logger.Error(errorMessage);
throw new ApplicationException(errorMessage);
}
_zoneOneToken 等是类中的私有字符串,它们在另一个类似于上面的 switch 语句中设置,然后使用上面的 switch 语句获取每个区域。
我有一个从数据库获取所有区域的 DAO - 如下:
var allZones = zoneDao.GetAllZones();
allZones 然后将包含区域名称、区域 ID 和区域 URL - 无论如何我可以在我的案例语句中使用这个 ZoneUrl,而不是硬编码字符串值?
如果我添加了一个包含 ZoneIds 的 Enum 类,如下所示:
public enum ZoneEnum
{
None = 0,
ZoneOne = 1,
ZoneTwo = 2,
ZoneThree = 3
}
如果我随后使用来自 allZones 的 Id 并将其也传递给 switch 语句:
switch (zoneId)
{
case ZoneEnum.ZoneOne :
// how would I get zoneOne Url here?
//removed rest of code for this for brevity
}
【问题讨论】:
-
@OlivierJacot-Descombes - 你能用答案扩展吗 - 返回的 ZoneId 将是 DB 中表上的 PK - 分别为 1、2,3
标签: c# .net switch-statement