/// <summary> /// Configures the dependency resolver for Cofoundry and /// registers all the services, repositories and modules setup for auto-registration. /// </summary> public static IMvcBuilder AddCofoundry( this IMvcBuilder mvcBuilder, IConfiguration configuration, Action <AddCofoundryStartupConfiguration> configBuilder = null ) { var cofoundryConfig = new AddCofoundryStartupConfiguration(); configBuilder?.Invoke(cofoundryConfig); AddAdditionalTypes(mvcBuilder); DiscoverAdditionalApplicationParts(mvcBuilder, cofoundryConfig); var typesProvider = new DiscoveredTypesProvider(mvcBuilder.PartManager); var builder = new DefaultContainerBuilder(mvcBuilder.Services, typesProvider, configuration); builder.Build(); RunAdditionalConfiguration(mvcBuilder); return(mvcBuilder); }
private static void DiscoverAdditionalApplicationParts(IMvcBuilder mvcBuilder, AddCofoundryStartupConfiguration cofoundryConfig) { // We could configure AssemblyDiscoveryProvider through settings? var assemblyPartDiscoveryProvider = new AssemblyDiscoveryProvider(); var additionalAssemblies = assemblyPartDiscoveryProvider.DiscoverAssemblies(mvcBuilder, cofoundryConfig.AssemblyDiscoveryRules); foreach (var additionalAssembly in additionalAssemblies) { mvcBuilder.AddApplicationPart(additionalAssembly); } }