Exemple #1
0
        /// <summary>Adds services required for using SheetToObjects by scanning the given assemblies for SheetToObjectConfig files</summary>
        /// <param name="services">The <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection" /> to add the services to.</param>
        /// <param name="assemblies"></param>
        /// <returns>The <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection" /> so that additional calls can be chained.</returns>
        public static IServiceCollection AddSheetToObjects(this IServiceCollection services, Assembly[] assemblies)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            if (assemblies == null || !assemblies.Any())
            {
                throw new ArgumentNullException(nameof(assemblies));
            }

            var sheetToObjectConfigTypes = GetTypesFromAssemblies <SheetToObjectConfig>(assemblies);

            var sheetToObjectConfigs = CreateInstances <SheetToObjectConfig>(sheetToObjectConfigTypes).ToList();

            var sheetMapper = new SheetMapper();

            foreach (var config in sheetToObjectConfigs)
            {
                sheetMapper.AddSheetToObjectConfig(config);
            }

            services.TryAdd(ServiceDescriptor.Singleton <IMapSheetToObjects>(sheetMapper));

            return(services);
        }