【发布时间】:2011-09-16 10:08:48
【问题描述】:
如果是这种情况,我可能会在这里遗漏一些要点 - 请将该讨论作为我的问题的一部分:)。
这是一个缩短并重命名的工作代码示例。 GetTicks(…) 是单个样本,可以是任何类型的功能(> 0 < 9 的值应返回特定的 Enum a.so)。
public static class Something
{
public enum TypeOf : short
{
Minute = 2, Hour = 3, Day = 4, …
}
public static long GetTicks(Something.TypeOf someEnum)
{
long ticks = 0;
switch (someEnum)
{
case Something.TypeOf.Minute:
ticks = TimeSpan.TicksPerMinute;
break;
case Something.TypeOf.Hour:
ticks = TimeSpan.TicksPerHour;
break;
....
}
return ticks;
}
}
// This class is called from anywhere in the system.
public static void SomeMethod(string dodo, object o, Something.TypeOf period)
{
// With the design above
long ticks = Something.GetTicks(period);
// Traditional, if there was a simple enum
if (period == Something.Day)
ticks = TimeSpan.FromDays(1).Ticks;
else if (period == Something.Hour)
ticks = TimeSpan.FromHours(1).Ticks;
}
这个想法是收集与enum 相关的功能,尽可能靠近enum 本身。 enum 是原因函数。另外,我发现在enum 附近寻找这样的功能很容易也很自然。此外,它很容易修改或扩展。
我的缺点是我必须更明确地说明enum,例如Something.TypeOf。设计可能看起来不标准?如果enum 供班级内部使用,它是否适用。
你会如何做得更好?
我试过abstract,基本继承,partial。它们似乎都不适用。
【问题讨论】:
标签: c#