http://www.west-wind.com/weblog/posts/632732.aspx
I usually don't like to use enum values as display content.
Using a custom DisplayText attribute on the enum value that is
extracted in the UI is IMHO more flexible and less code. :-)public enum BugStatusTypes
{
[DisplayText(Text = "Entered")]
Entered,
[DisplayText(Text = "In Process")]
InProcess,
Fixed,
ByDesign,
NotReproducible,
NoBug,
None
}
Often times this will save some cross assembly refactorings that would
arise as the display text needs to be changed.
You
can then extract the display text with a simple method. (Making it an
extension methods enables calling it directly off the enum value)public static string GetDisplayText(this Enum enumValue)
{
var type = enumValue.GetType();
MemberInfo[] memberInfo = type.GetMember(enumValue.ToString());
if (memberInfo == null || memberInfo.Length == 0)
return enumValue.ToString();
object[] attributes = memberInfo[0].GetCustomAttributes(typeof(DisplayTextAttribute), false);
if (attributes == null || attributes.Length == 0)
return enumValue.ToString();
return ((DisplayTextAttribute)attributes[0]).Text;
}
The calling code is dead simple.string displayValue = BugStatusTypes.Entered.GetDisplayText();
The custom attributepublic class DisplayTextAttribute : Attribute
{
public string Text { get; set; }
}
What do you think?
poniedziałek, 23 lutego 2009
enum DisplayText
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz