2009
10.31
10.31
I’ve seen quite a few solutions for extending enum’s in c#, some of them quite complicated. One of the more common is adding additional attributes to store more information. The solution i prefer for this is not to use enum’s at all, e.g.
public class Title {
public static readonly Title Mr = new Title(Gender.Male);
public static readonly Title Master = new Title(Gender.Male);
public static readonly Title Miss = new Title(Gender.Female);
public static readonly Title Mrs = new Title(Gender.Female);
public Gender Gender { get; private set; }
private Title(Gender gender) {
Gender = gender;
}
}
public static readonly Title Mr = new Title(Gender.Male);
public static readonly Title Master = new Title(Gender.Male);
public static readonly Title Miss = new Title(Gender.Female);
public static readonly Title Mrs = new Title(Gender.Female);
public Gender Gender { get; private set; }
private Title(Gender gender) {
Gender = gender;
}
}
One another bonus is it avoids temptation of using switches to perform different functionality on each item of an enum. Instead it forces you to separate functionality using patterns like chain of responsibility.
No Comment.
Add Your Comment