/// <summary> /// Get the <c>ExcelColumnInfo</c> for all members of a class. /// </summary> /// <param name="itemType">Type of item being serialised.</param> /// <param name="data">The collection of values being serialised. (Not used, provided for use by derived /// types.)</param> public virtual ExcelColumnInfoCollection GetExcelColumnInfo(Type itemType, IEnumerable <object> data) { var fields = GetSerialisableMemberNames(itemType, data); var properties = GetSerialisablePropertyInfo(itemType, data); var fieldInfo = new ExcelColumnInfoCollection(); // Instantiate field names and fieldInfo lists with serialisable members. foreach (var field in fields) { var propName = field; var prop = properties.FirstOrDefault(p => p.Name == propName); if (prop == null) { continue; } fieldInfo.Add(new ExcelColumnInfo(field, ReflectionHelper.GetAttribute <ExcelColumnAttribute>(prop))); } PopulateFieldInfoFromMetadata(fieldInfo, itemType, data); return(fieldInfo); }