public static ModelReadTemplate FromJson(string json) { var result = new ModelReadTemplate(); result.ReadJson(json); return(result); //return JsonConvert.DeserializeObject<ModelReadTemplate>(json); }
public static DataTable ToDataTable <T>(this IEnumerable <T> list, ModelReadTemplate template = null) where T : BaseModel { var result = BaseModel.GetDataTable(typeof(T)); foreach (var model in list) { result.Rows.Add(model.ToDataRow(template)); } return(result); }
public static ModelReadTemplate GetDefault(Type type, ModelReadType defaultConversion = ModelReadType.SafeConvert, bool useCache = true) { ModelReadTemplate result; if (!defaultTemplates.ContainsKey(type) || !useCache) { result = new ModelReadTemplate(); foreach (PropertyInfo property in type.GetProperties(BindingFlags.Public | BindingFlags.Instance)) { var x = property.Name; if (BaseModel.IsBindable(property)) { var mrti = new ModelReadTemplateItem { Source = x, Target = x, Conversion = defaultConversion }; result.Items.Add(mrti); } else { if (property.PropertyType.DescendsFrom(typeof(BaseModel))) { var propertyTemplate = GetDefault(property.PropertyType, defaultConversion, useCache); foreach (var item in propertyTemplate.Items) { var mrti = new ModelReadTemplateItem { Source = x + "." + item.Source, Target = x + "." + item.Target, Conversion = defaultConversion }; result.Items.Add(mrti); } } } } defaultTemplates.TryAdd(type, result); } else { result = defaultTemplates[type]; } return(result); }
public ModelReadTemplate Reverse() { var result = new ModelReadTemplate(); foreach (var item in Items) { var newItem = item.Clone(); newItem.Source = item.Target; newItem.Target = item.Source; result.Items.Add(newItem); } return(result); }
public static DataTable ToDataTable <T>(this List <T> list, string jsonTemplate = null) where T : BaseModel, new() { ModelReadTemplate template = null; if (!string.IsNullOrEmpty(jsonTemplate)) { template = ModelReadTemplate.FromJson(jsonTemplate); } else { template = ModelReadTemplate.GetDefault <T>(); } var result = BaseModel.GetDataTable <T>(template); foreach (var item in list) { var row = item.ToDataRow(template, result); result.Rows.Add(row); } return(result); }