public List <PropertyConfig> DoCheckFieldes(string arg) { var columns = new List <PropertyConfig>(); var lines = Fields.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); var idx = 0; foreach (var line in lines) { if (string.IsNullOrEmpty(line)) { continue; } var words = line.Trim().Split(new[] { ',', ',' }, StringSplitOptions.RemoveEmptyEntries); var name = words[0].TrimStart('_').ToUWord(); /* * 文本说明: * 1 每行为一条数据 * 2 每个单词用逗号分开 * 3 第一个单词 代码名称; 第二个单词 数据类型;第三个单词 说明文本 */ PropertyConfig column = new PropertyConfig { IsPrimaryKey = name.Equals("ID", StringComparison.OrdinalIgnoreCase), ColumnName = name, Name = name, CsType = "string", DbType = "nvarchar" }; column.Option.Index = idx++; if (words.Length > 1) { CsharpHelper.CheckType(column, words[1]); } if (words.Length > 2) { column.Caption = words[2]; } if (words.Length > 3) { column.Description = words.Length < 4 ? null : words.Skip(3).LinkToString(","); } var old = columns.FirstOrDefault(p => p != null && p.Name == name); if (old != null) { columns.Remove(old); } columns.Add(column); } return(columns); }
private static void CheckPropertyType(Type type, EntityConfig entity, PropertyConfig prperty, MemberInfo field, Type fieldType, bool json, bool dataMember) { try { prperty.Nullable = fieldType.IsSubclassOf(typeof(Nullable <>)); Type type1 = prperty.Nullable ? fieldType.GetGenericArguments()[0] : fieldType; if (type1.IsArray) { prperty.ReferenceType = ReflectionHelper.GetTypeName(type1); prperty.IsArray = true; type1 = type1.MakeArrayType(); } else if (type1.IsSupperInterface(typeof(IDictionary <,>))) { prperty.ReferenceType = ReflectionHelper.GetTypeName(type1); var pars = type1.GetGenericArguments(); prperty.IsDictionary = true; prperty.CsType = ReflectionHelper.GetTypeName(type1); type1 = pars[1]; } else if (type1.IsGenericType && type1.IsSupperInterface(typeof(IEnumerable <>))) { prperty.ReferenceType = ReflectionHelper.GetTypeName(type1); prperty.IsArray = true; type1 = type1.GetGenericArguments()[0]; } CsharpHelper.CheckType(prperty, type1.GetTypeName()); if (type1.IsEnum) { prperty.CustomType = ReflectionHelper.GetTypeName(type1); prperty.CsType = "int"; prperty.IsEnum = true; } else if (!type1.IsBaseType()) { //prperty.CustomType = ReflectionHelper.GetTypeName(type1); prperty.NoStorage = true; prperty.IsLinkField = true; prperty.LinkTable = prperty.CustomType; } } catch (Exception ex) { prperty.CsType = "object"; Trace.WriteLine(ex, $"Error : {type.FullName}.{field.Name}"); } if (json) { var ji = field.GetAttribute <JsonIgnoreAttribute>(); if (ji != null) { prperty.NoneJson = true; } else { var jp = field.GetAttribute <JsonPropertyAttribute>(); if (jp == null) { return; } prperty.NoneJson = false; if (!string.IsNullOrWhiteSpace(jp.PropertyName)) { prperty.JsonName = jp.PropertyName; } } } else if (dataMember) { var id = field.GetAttribute <IgnoreDataMemberAttribute>(); if (id != null) { prperty.NoneJson = true; } var dm = field.GetAttribute <DataMemberAttribute>(); if (dm == null) { return; } prperty.NoneJson = false; if (!string.IsNullOrWhiteSpace(dm.Name)) { prperty.JsonName = dm.Name; } } }