public object Imitate(DataImitateProvider provider, Type imitateType, object arrayObject) { var listType = typeof(List <>).MakeGenericType(GetElementType(imitateType)); var list = Activator.CreateInstance(listType); foreach (var item in (IEnumerable)arrayObject) { if (item == null) { continue; } listType.InvokeMember("Add", BindingFlags.InvokeMethod, null, list, new[] { provider.Imitate(GetElementType(imitateType), item) }); } return(Return(list, imitateType)); }
public object Imitate(DataImitateProvider provider, Type imitateType, object obj) { var newObject = Activator.CreateInstance(imitateType); foreach (var item in (IEnumerable <KeyValuePair <string, object> >)obj) { if (item.Value == null) { continue; } var modelProp = imitateType.GetProperties().FirstOrDefault(x => provider.GetName(x) == item.Key); if (modelProp == null) { continue; } var imitateValue = provider.Imitate(item.GetType(), item.Value); provider.SetValue(modelProp, newObject, imitateValue); } return(newObject); }
public object Imitate(DataImitateProvider provider, Type imitateType, object obj) { if (obj == null) { return(null); } var props = obj.GetType().GetProperties(); var newModel = Activator.CreateInstance(imitateType); foreach (var prop in props) { var name = provider.GetName(prop); var modelProp = imitateType.GetProperties().FirstOrDefault(x => x.Name == name); if (modelProp == null) // böyle bir property yok { continue; } var value = prop.GetValue(obj); provider.SetValue(prop, newModel, provider.Imitate(value.GetType(), value)); } return(newModel); }