internal PlusApplicationBase( [NotNull] Type startupModuleType, [NotNull] IServiceCollection services, [CanBeNull] Action <PlusApplicationCreationOptions> optionsAction) { Check.NotNull(startupModuleType, nameof(startupModuleType)); Check.NotNull(services, nameof(services)); StartupModuleType = startupModuleType; Services = services; services.TryAddObjectAccessor <IServiceProvider>(); var options = new PlusApplicationCreationOptions(services); optionsAction?.Invoke(options); services.AddSingleton <IPlusApplication>(this); services.AddSingleton <IModuleContainer>(this); services.AddCoreServices(); services.AddCorePlusServices(this, options); Modules = LoadModules(services, options); ConfigureServices(); }
public static void UseAutofac(this PlusApplicationCreationOptions options) { var builder = new ContainerBuilder(); options.Services.AddObjectAccessor(builder); options.Services.AddSingleton((IServiceProviderFactory <ContainerBuilder>) new PlusAutofacServiceProviderFactory(builder)); }
protected virtual IReadOnlyList <IPlusModuleDescriptor> LoadModules(IServiceCollection services, PlusApplicationCreationOptions options) { return(services .GetSingletonInstance <IModuleLoader>() .LoadModules( services, StartupModuleType, options.PlugInSources )); }