コード例 #1
0
        public static ModelReadTemplate FromJson(string json)
        {
            var result = new ModelReadTemplate();

            result.ReadJson(json);

            return(result);
            //return JsonConvert.DeserializeObject<ModelReadTemplate>(json);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }