Object 反射 List

 public static object DeserializeModel<T>(object dataModel)
        {
            Type type = typeof(T);
            Object entity = Activator.CreateInstance(type);
            Type data = dataModel.GetType();
            if (data.Name.Contains("List"))
            {
                List<T> listCall = new List<T>();
                //需要被转换的对象
                IEnumerable<object> list = dataModel as IEnumerable<object>;
                foreach (var sourceModel in list)
                {
                    entity = Activator.CreateInstance(type);
                    //循环需要被反对对象的字段
                    foreach (var item in type.GetProperties())
                    {
                        var source = sourceModel.GetType();
                       if (source.GetProperty(item.Name) != null)
                            {
                                var val = source.GetProperty(item.Name).GetValue(sourceModel, null);
                                item.SetValue(entity, val);
                            }
                     
                    }
                    listCall.Add((T)entity);
                }
                return listCall;

            }
            else
            {
                foreach (var item in type.GetProperties())
                {
                    if (data.GetProperty(item.Name) != null)
                    {
                        var val = data.GetProperty(item.Name).GetValue(dataModel, null);
                        item.SetValue(entity, val);
                    }

                }
                return (T)entity;
            }
        }

根据T类型将传入进来的Object对象进行反射,有待完善记录一下

原文地址:https://www.cnblogs.com/-Kam/p/9353412.html