Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Convert.ChangeType如何从字符串转换为枚举 公共静态T转换(字符串值) { return(T)Convert.ChangeType(value,typeof(T)); } 公共枚举类别 { 空的,, 名称 城市 国家 } 类别类别=转换(“1”)//Name=1_C#_Enums_Converter - Fatal编程技术网

C# Convert.ChangeType如何从字符串转换为枚举 公共静态T转换(字符串值) { return(T)Convert.ChangeType(value,typeof(T)); } 公共枚举类别 { 空的,, 名称 城市 国家 } 类别类别=转换(“1”)//Name=1

C# Convert.ChangeType如何从字符串转换为枚举 公共静态T转换(字符串值) { return(T)Convert.ChangeType(value,typeof(T)); } 公共枚举类别 { 空的,, 名称 城市 国家 } 类别类别=转换(“1”)//Name=1,c#,enums,converter,C#,Enums,Converter,当我调用Convert.ChangeType时,系统抛出一个异常,即无法从字符串转换为类别。 如何进行转换? 也许我需要为我的类型实现任何转换器?为此使用方法 public static T Convert<T>(String value) { return (T)Convert.ChangeType(value, typeof(T)); } public enum Category { Empty, Name,

当我调用
Convert.ChangeType
时,系统抛出一个异常,即无法从字符串转换为类别。 如何进行转换? 也许我需要为我的类型实现任何转换器?

为此使用方法

  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
公共静态T转换(字符串值)
{
if(类型(T).IsEnum)
返回(T)Enum.Parse(typeof(T),value);
return(T)Convert.ChangeType(value,typeof(T));
}
.Net核心版本:

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));
}
公共静态T转换(字符串值)
{
if(typeof(T).GetTypeInfo().IsEnum)
返回(T)Enum.Parse(typeof(T),value);
return(T)System.Convert.ChangeType(value,typeof(T));
}

Enum.Parse(typeof(Category),“City”,true)哇!这是一个很好的补充。
(T)Enum.Parse(typeof(T),value,true);//忽略大小写:true。
(T)Enum.Parse(typeof(T),value,true)//忽略大小写:true。
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));
}