Convert.ChangeType如何从String转换为Enum

时间:2013-12-30 08:25:36

标签: c# enums converter

  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转换为Category而抛出异常。 怎么做转换? 也许我需要为我的类型实现任何转换器?

1 个答案:

答案 0 :(得分:60)

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