If you don’t mind a little more writing you can make extension methods to expand the interface of the enum
.
e.g.
public enum TimeUnit
{
Second,
Minute,
Hour,
Day,
Year,
/* etc */
}
public static class TimeUnitExtensions
{
public static long InTicks(this TimeUnit myUnit)
{
switch(myUnit)
{
case TimeUnit.Second:
return TimeSpan.TicksPerSecond;
case TimeUnit.Minute:
return TimeSpan.TicksPerMinute;
/* etc */
}
}
}
This can add “instance” methods to your enums. It’s a bit more verbose than mostly liked, though.
Remember though that an enum
should be treated mostly as a named value.