Convert.ChangeType How to convert from String to Enum

倖福魔咒の 提交于 2019-11-29 05:08:57

问题


  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

When I call Convert.ChangeType, the system throws an exception on the impossibility of conversion from String to Category. How to do the conversion? Maybe I need to implement any converter for my type?


回答1:


Use Enum.Parse method for this.

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));
}


来源:https://stackoverflow.com/questions/20835880/convert-changetype-how-to-convert-from-string-to-enum

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!