Jak spróbowaćParse dla wartości Enum?

Chcę napisać funkcję, która może zweryfikować daną wartość (przekazaną jako ciąg znaków) względem możliwych wartości anenum. W przypadku dopasowania powinien zwrócić instancję enum; w przeciwnym razie powinna zwrócić wartość domyślną.

Funkcja może nie być używana wewnętrznietry/catch, co wyklucza używanieEnum.Parse, który zgłasza wyjątek, gdy podano niepoprawny argument.

Chciałbym użyć czegoś w stylu aTryParse funkcja implementująca to:

public static TEnum ToEnum<TEnum>(this string strEnumValue, TEnum defaultValue)
{
   object enumValue;
   if (!TryParse (typeof (TEnum), strEnumValue, out enumValue))
   {
       return defaultValue;
   }
   return (TEnum) enumValue;
}

questionAnswers(14)

yourAnswerToTheQuestion