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); }