У меня есть TryParseName
метод в UnconstrainedMelody , библиотека для методов делегатов и вспомогательных перечислений, которая использует «невыразимые» ограничения с помощью некоторых хитростей после сборки. (Код с использованием библиотека не нуждается в пост-сборке, просто для ясности.)
Вы бы использовали это так:
Foo foo;
bool parsed = Enums.TryParseName<Foo>(name, out foo);
В настоящее время у меня нет версии без учета регистра, но я мог бы легко представить ее, если хотите. Обратите внимание, что не пытается проанализировать числа, например «12», как встроенная версия, и не пытается анализировать разделенные запятыми списки флагов. Я могу добавить версию флагов позже, но я не вижу особого смысла в числовой версии.
Это делается без бокса и без проверки типа времени выполнения. Наличие ограничения действительно удобно:)
Пожалуйста, дайте мне знать, если вам будет полезен анализ без учета регистра ...