I was just talking to Tim Goodwin who was a co-worker of mine, and the best programmer on the planet (he made me say that). Seriously though he is a great programmer and seems to be 5-10 steps ahead of where I am. He suggested an alternative to using a strategy pattern for the enum refactoring. This method has a smaller code footprint which is nice and much faster to implement / refactor to.
public enum lineEnum
Payment=1
Refund=2
Void=3
end enum
becomes
public class lineEnum
public shared readonly Payment as lineEnum = new lineEnum(1)
public shared readonly Refund as lineEnum = new lineEnum(2)
public shared readonly Void as lineEnum = new lineEnum(3)
private value as integer
public sub new(int value)
me.value = value
end sub
end class
So if I want I can still add a property to expose the integer representation if need be.
UPDATE: To avoid litigation. Tim never forced me to say he was the "Best programmer on earth". My legal department has advised me to issue a formal apology to Tim in the form of alcoholic beverages.