Convert.ChangeType How to convert from String to Enum

匿名 (未验证) 提交于 2019-12-03 02:49:01

问题:

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


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