In your last method, beside being awkward, you are boxing & unboxing the value. Which probably increase the time that method takes to run by at least one order of magnitude. A way to avoid this is to take advantage of something we already know... enums are `IConvertible`. void Main() { var b = new EnumDescConverter(); b.GetEnumValueT("Dummy desc").Dump(); } enum nums {zero, one, two, three}; enum Nums {Zero, One, Two, Three}; class EnumDescConverter { /// Simplified a bit for example. protected IConvertible GetEnumValue(string description) {return nums.one; } } class EnumDescConverter : EnumDescConverter where T : struct, IConvertible { public T GetEnumValueT(string description) { return (T) GetEnumValue(description);} } P.S. http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2557231-enums-constraint-for-generics[^]
Truth, James