Replace EnumUtils with a source generator
Feature request type
enhancement
Is your feature request related to a problem? Please describe
The logic in the EnumUtils is heavily relying on Dictionaries for optimizing the performance of converting the description attribute of an enum value to the enum and back
Describe the solution you'd like
We could do better and have a source generator generate static methods that have a fast switch-case that will perform better than looking up in a dictionary (and in some flows having additional logic)
Describe alternatives you've considered
No response
Additional context
we could use https://github.com/andrewlock/NetEscapades.EnumGenerators (see https://andrewlock.net/netescapades-enumgenerators-a-source-generator-for-enum-performance/) which also support the Description attribute
or maybe https://www.nuget.org/packages/Microsoft.Extensions.EnumStrings but it's not clear what the state of this is due to https://github.com/dotnet/extensions/pull/4639
I tried the following POC for this https://gist.github.com/Meir017/076cc5d2a96e2b1b12c190f3a48befc9
it still doesn't support Flags (ex: KeySpecificationFlags.RW | KeySpecificationFlags.Access)