/// <summary> /// Add entity property to excel cell value rule /// </summary> /// <param name="propName">Entity property name</param> /// <param name="colIndex">Column index</param> /// <returns></returns> public XLSXWriter <T> AddRule(Expression <Func <T, object> > propName, int colIndex) { var prop = TypeExtentions.GetProperty(propName); _rules.Add(new WriteRule(colIndex, prop)); return(this); }
/// <summary> /// Add csv value to entity property rule /// </summary> /// <param name="colIndex">Csv row column index</param> /// <param name="propName">Entity prop name</param> /// <param name="map">Map function</param> /// <returns></returns> public CsvBinder <T> AddRule(int colIndex, Expression <Func <T, object> > propName, Func <string, object> map) { var prop = TypeExtentions.GetProperty(propName); _rules.Add(new BindRule(colIndex, prop, map)); return(this); }
/// <summary> /// Add excel cell value to entity property rule /// </summary> /// <param name="colIndex">Excel cell index</param> /// <param name="propName">Entity property name</param> /// <param name="map">Cell value to property mapper</param> /// <returns></returns> public XLSXBinder <T> AddRule <P>(int colIndex, Expression <Func <T, P> > propName, Func <ICell, P> map) { var prop = TypeExtentions.GetProperty(propName); Rules.Add(new BindRule(colIndex, prop, (c) => map(c))); return(this); }
/// <summary> /// Add property to line column value mapper /// </summary> /// <param name="propName">Property name</param> /// <param name="colIndex">Line column index</param> /// <param name="map">Map func</param> /// <returns></returns> public CsvWriter <T> AddRule <P>(Expression <Func <T, P> > propName, Func <P, string> map = null) { var prop = TypeExtentions.GetProperty(propName); if (map == null) { _rules.Add(new WriteRule(prop, null)); } else { _rules.Add(new WriteRule(prop, (v) => map((P)v))); } return(this); }
private static void GetTableColumn(Table t, string column) { var c = new Column(); c.Name = column.GetSlice("\"", "\""); var type = column.GetSlice(" ", " ", column.IndexOf(c.Name) + c.Name.Length); Size size = null; if (type.Contains("(")) { var sizeStr = type.GetSlice("(", ")"); var minMaxStr = sizeStr.Split(','); if (minMaxStr.Length == 1) { size = new Size { Max = int.Parse(sizeStr) } } ; else { size = new Size { Min = int.Parse(minMaxStr[0]), Max = int.Parse(minMaxStr[1]) } }; type = type.Substring(0, type.IndexOf("(")); } c.Nullable = !column.Contains("NOT NULL"); c.Size = size; c.Type = TypeExtentions.FromDBType(type, size, c.Nullable); if (column.Contains("DEFAULT NEXTVAL")) { var s = new Sequence(); s.Name = column.GetSlice("DEFAULT NEXTVAL(('\"", "\"'"); s.Column = c; c.Sequence = s; } t.Columns.Add(c); c.Table = t; }
private void ProtoMemberToTableKV(ref StringBuilder sb, BaseInfoAndAttribute infoAndAttr) { var itemType = infoAndAttr.InfoType; var itemName = infoAndAttr.InfoName; // 将枚举转成int 传入, lua中有对应的 lua enum if (itemType.IsEnum) { CodeLine(ref sb, "string", "int", itemName, "(int)", "枚举转化成 Int 进行传递"); } else { var typeToStr = TypeExtentions.TypeToString(itemType); if (!string.IsNullOrEmpty(typeToStr)) { CodeLine(ref sb, "string", typeToStr, itemName, string.Empty); } else { //Tip("Type = {0} 在 TypeExtentions 中预定义类型中找不到。", itemType.FullName); if (itemType.IsClass) { //Tip("{0} 是 Class 类型 {1}", itemName, itemType); if (itemType.IsGenericList()) { var genericArguments = itemType.GetGenericArguments(); if (genericArguments != null) { if (genericArguments.Length == 1) { var arg = genericArguments[0]; if (Has <ProtoContractAttribute>(arg)) { var argNamespace = arg.Namespace; // 如果这个类的命名空间不在同一个命名空间中就将引入它的命名空间 if (!string.IsNullOrEmpty(argNamespace) && !argNamespace.Equals(this.m_type.Namespace)) { m_headerUsings.Add(argNamespace); } CodeLineLuaTableList(ref sb, itemName); } else { TipError("{0} GenericList arg's type = {1} 无 ProtoContactAttribute ", itemName, arg); } } else { TipError("注意: GenericList 泛型参数个数 = {0}, 暂时不支持解析!" + genericArguments.Length); } } //TipError("||| ********* " + itemName + " 是 GenericList 类型 " + itemType); } else if (itemType.IsArray) { TipError("********** 注意:Type = {0} is Array 类型, 暂时不支持解析!" + itemType.FullName + " ********"); } else { TypeToLuaTable(ref sb, itemType, itemName); } } else if (itemType.IsArray) { TipError(itemName + " 是 Array 类型 " + itemType); } } } }