private static IEnumerable <Assembly> GetAssembliesToCheck(EnchiladaBuilderOptions builderOptions)
        {
            var assembliesToCheck = new List <string> {
                Assembly.GetEntryAssembly().GetName().Name
            };

            assembliesToCheck.AddRange(builderOptions.Namespaces);

            var assemblies = DependencyContext.Default
                             .RuntimeLibraries
                             .Where(x => assembliesToCheck.Contains(x.Name) || x.Name.StartsWith(nameof(Enchilada), StringComparison.CurrentCultureIgnoreCase))
                             .Select(x => Assembly.Load(new AssemblyName(x.Name)));

            return(assemblies);
        }
        public static IServiceCollection AddEnchilada(this IServiceCollection serviceCollection, EnchiladaBuilderOptions builderOptions)
        {
            var configurations = (from configuredAdapter in builderOptions.Adapters.GetChildren()
                                  let adapterTypes = GetAvailableEnchiladaAdapters(GetAssembliesToCheck(builderOptions))
                                                     let adapterProperties = configuredAdapter.GetChildren().ToList()
                                                                             let matchingFilesystemAdapter = GetEnchiladaAdapterType(configuredAdapter, adapterTypes)
                                                                                                             where (matchingFilesystemAdapter != null) && adapterProperties.Any(section => section.Key.ToLower() == "adapter")
                                                                                                             select CreateConfigurationInstance(matchingFilesystemAdapter, configuredAdapter, adapterProperties)).ToList();

            var enchiladaFileProviderResolver = new EnchiladaFileProviderResolver(new EnchiladaConfiguration
            {
                Adapters = configurations
            });

            serviceCollection.AddSingleton <IEnchiladaFilesystemResolver>(enchiladaFileProviderResolver);

            return(serviceCollection);
        }