Подтвердить что ты не робот

Convert.ChangeType Как конвертировать из String в Enum

  public static T Convert<T>(String value)
  {
    return (T)Convert.ChangeType(value, typeof(T));
  }

   public enum Category 
   {
       Empty,
       Name,
       City,
       Country
   }

  Category cat=Convert<Category>("1");//Name=1

Когда я вызываю Convert.ChangeType, система выдает исключение из невозможности преобразования из String в категорию. Как сделать преобразование? Может быть, мне нужно реализовать любой конвертер для моего типа?

4b9b3361

Ответ 1

Используйте Enum.Parse для этого.

public static T Convert<T>(String value)
{
    if (typeof(T).IsEnum)
       return (T)Enum.Parse(typeof(T), value);

    return (T)Convert.ChangeType(value, typeof(T));
}

Ответ 2

.Net Core version:

public static T Convert<T>(string value)
{
    if (typeof(T).GetTypeInfo().IsEnum)
        return (T)Enum.Parse(typeof(T), value);

    return (T)System.Convert.ChangeType(value, typeof(T));
}