【发布时间】:2011-09-26 10:51:47
【问题描述】:
我有一个具有两个属性的对象:Text 和 Type。
为了避免对类型进行硬编码,我将它们放在数据库中,以便将来添加。目前类型为URL, Username and ID。
但是,我现在想运行一个 Utility 方法来清理对象的 Text 字段,基于该对象是哪个 Type(例如,如果它是一个 URL,则添加“http://”)。
有没有办法在 Utilities 类中执行此操作,而无需在 switch 语句/if else 块中硬编码类型。
switch (type)
{
case 1:
TidyUrl();
case 2:
TidyUsername();
case 3:
TidyID();
default:
break;
}
在本例中,我从数据库(“类型”表)中硬编码 ID,这绝不是一件好事!
有没有更好的方法来做到这一点?
【问题讨论】:
-
无论我在数据库中使用接口和工厂、枚举器还是方法名称,似乎都无法绕过 if/else 逻辑,这将需要在某处说出哪个是哪个,这就是我找不到避免硬编码的方法。
标签: c# if-statement switch-statement hard-coding