PropertyInfo.SetValue方法为对象的一个Enum类型的属性赋值时就会出现类型转换失败的错误。求教高手这个问题如何解决!!
十分感谢!

解决方案 »

  1.   

    用Enum.Parse方法把字符串转化为你的枚举值后再赋给Property
      

  2.   

    可是我这个是在泛型生成model里面用到的。  其他的属性不全是Enum类型的!
      

  3.   

    这个是modelpublic class model
    {
        private string _name;
        private Myenum _type;
        private DateTime _addtime;    public string Name
        {
            get { return _name; }
            set { _name = value; }
        }    public Myenum Type
        {
            get { return _type; }
            set { _type = value; }
        }
        public DateTime AddTime
        {
            get { return _addtime; }
            set { _addtime = value; }
        }}这个是调用代码protected void Page_Load(object sender, EventArgs e)
        {
            string[,] str = new string[3, 2];
            for (int a = 0; a < 2; a++)
            {
                str[0, a] = "sdf" + a;
                str[1, a] = (1 + a).ToString();
                str[2, a] = DateTime.Now.ToString();
            }        IList<model> list = CreateModelList(str);        Response.Write(list.Count);
        }    protected IList<model> CreateModelList(string[,] str)
        {
            
            PropertyInfo[] pros = typeof(model).GetProperties();
            IList<model> modelList = new List<model>();
            for (int b = 0; b < str.GetLength(1); b++)
            {
                model m = new model();
                for (int a = 0; a < pros.Length; a++)
                {
                    pros[a].SetValue(m, str[a, b], null);
                }
                modelList.Add(m);
            }
            return modelList;
        }
      

  4.   

    private void GetReaderToObject(IDataReader reader, object targetObj)  
      {  
      for (int i = 0; i < reader.FieldCount; i++)  
      {  
      string columnName = reader.GetName(i); //获取字段名称
      object columnValue = reader.GetValue(i); //字段值
      PropertyInfo property = targetObj.GetType().GetProperty(columnName); //获取实体对象属性
      if (property != null)  
      {  
      if (columnValue != DBNull.Value)  
      {  
      if (property.PropertyType.IsEnum) //属性类型是否表示枚举
      {  
      object enumName = Enum.ToObject(property.PropertyType, columnValue);  
      property.SetValue(targetObj, enumName, null); //获取枚举值,设置属性值
      }  
      else  
      {  
      property.SetValue(targetObj, columnValue, null);  
      }  
      }  
      }    }  
      }