c#将字典转换为对象。更好的方法

时间:2017-03-08 03:47:37

标签: c# dictionary reflection

  1. 我想使用简单的c#反射代码。
  2. 目标字典的值可能包含字典。
  3. 该值是对象类型,它是一个通用属性。
  4. 我想删除if语句。
  5. 我该怎么办?
  6. 目标

        static public T ToObject<T>(Dictionary<string, object> target) where T : class, new()
        {
            var obj = new T();
            foreach (var data in target)
            {
                var field = obj.GetType().GetField(data.Key);
                if (field.FieldType.Equals(typeof(Dictionary<string, long>)))
                {
                    field.SetValue(obj, PaseDictionaryStringAnd<long>(data.Value));
                }
                else if (field.FieldType.Equals(typeof(Dictionary<string, double>)))
                {
                    field.SetValue(obj, PaseDictionaryStringAnd<double>(data.Value));
                }
                else
                {
                    field.SetValue(obj, data.Value);
                }
            }
    
            return obj;
        }
    
        static Dictionary<string, T> PaseDictionaryStringAnd<T>(object data)
        {
            var tempDic = new Dictionary<string, T>();
            foreach (var val in (Dictionary<string, object>)data)
            {
               tempDic[val.Key] = (T)val.Value;
            }
            return tempDic;
        }
    

0 个答案:

没有答案