/// <summary> /// Returns enumerable collection of TOutType. /// </summary> /// <typeparam name="TIn">Converter origin type</typeparam> /// <typeparam name="TOutType">Converter output type</typeparam> /// <param name="sheetTable"><see cref="SheetTable"/></param> /// <param name="propertyMap">Dictionary< propertyName, header ></param> /// <param name="typeConverter">Type typeConverter</param> /// <param name="progressFunc"></param> /// <returns></returns> public static IEnumerable <TOutType> GetEnumerable <TOutType, TIn>(SheetTable sheetTable, Dictionary <string, (string header, int column)> propertyMap,
/// <summary> /// Returns tuple of Type and Dictionary< propertyName, header > /// </summary> /// <param name="sheetTable"><see cref="SheetTable"/></param> /// <returns>Tuple of Type and Dictionary< propertyName, header ></returns> public (Type type, Dictionary <string, (string header, int column)> propertyMap) GetTypeWithMap(SheetTable sheetTable) { var sheetHeaderMap = sheetTable.SheetHeaderMap.ToArray(); foreach (var type in _typeDictionary.OrderByDescending(t => t.Value.Count).Select(t => t.Key)) { // check for speed var propertyNamesMap = _typeDictionary[type]; if (propertyNamesMap.Count > sheetHeaderMap.Length) { continue; } // successfull token if (TryGetPropertyMap(sheetHeaderMap, propertyNamesMap, out var propertyToSheetMap)) { return(type, propertyToSheetMap); } } return(null, null); }