public IColumnBuilder <TItem> Add(Expression <Func <TItem, object> > expression) { var memberAccessor = new MemberAccessor <TItem>(expression); var column = new ColumnBuilder <TItem>(this, memberAccessor); _columns.Add(column); return(column); }
private void GenerateColumns() { var memberInfos = typeof(TItem).GetMembers(BindingFlags.Public | BindingFlags.Instance) .Where(x => x.MemberType == MemberTypes.Field || x.MemberType == MemberTypes.Property); var members = new List <Member>(); foreach (var memberInfo in memberInfos) { var columnFormat = memberInfo .GetCustomAttributes(true) .SingleOrDefault(x => x is ColumnAttribute) as ColumnAttribute; if (columnFormat is null) { members.Add(new Member { Index = 0, MemberInfo = memberInfo, ColumnAttribute = null }); } if (columnFormat != null) { members.Add(new Member { Index = columnFormat.Index, MemberInfo = memberInfo, ColumnAttribute = columnFormat }); } } foreach (var member in members.OrderBy(x => x.Index)) { var memberAccessor = new MemberAccessor <TItem>(member.MemberInfo); var column = new ColumnBuilder <TItem>(this, memberAccessor); _columns.Add(column); if (member.ColumnAttribute == null) { continue; } if (member.ColumnAttribute.Header != null) { column.NameAs(member.ColumnAttribute.Header); } column .HorizontalAlignmentAs(member.ColumnAttribute.HorizontalAlignment) .VerticalAlignmentAs(member.ColumnAttribute.VerticalAlignment) .FormatAs(member.ColumnAttribute.Format); } }