public void TestHelloNonGenericServiceDecoratorNoInterface() { var services = new ServiceCollection(); services.AddInstance<IHelloService>(new HelloService()); services.AddSingleton<IHelloService>(sp => new HelloService()); services.AddScoped<IHelloService>(sp => new HelloService()); services.AddTransient<IHelloService>(sp => new HelloService()); services.AddSingleton<IHelloService, HelloService>(); services.AddScoped<IHelloService, HelloService>(); services.AddTransient<IHelloService, HelloService>(); services.AddDecorator(typeof(IHelloService), (sp, s) => new HelloServiceDecoratorNoInterface((IHelloService)s)); var provider = services.BuildServiceProvider(); var helloServices = provider.GetRequiredServices<IHelloService>(); Assert.NotNull(helloServices); var collection = helloServices as IHelloService[] ?? helloServices.ToArray(); Assert.Equal(7, collection.Length); Assert.NotEmpty(collection); foreach (var helloService in collection) { Assert.NotNull(helloService); Assert.Equal("Decorated without interface: Hello world.", helloService.SayHello("world")); } }
public static IServiceCollection GetDefaultServices() { var services = new ServiceCollection(); services.AddTransient<IRequestAuthorizerProvider, DefaultRequestAuthorizerProvider>(); services.AddTransient<IRequestHandlerProvider, DefaultRequestHandlerProvider>(); services.AddTransient<IRequestRuntimeProvider, DefaultRequestRuntimeProvider>(); return services; }
private void RegisterServices() { ServiceCollection services = new ServiceCollection(); services.AddSingleton<IBooksService, BooksService>(); services.AddSingleton<IMessagingService, WPFMessagingService>(); services.AddTransient<BooksViewModel>(); services.AddTransient<BookViewModel>(); services.AddTransient<RandomViewModel>(); Container = services.BuildServiceProvider(); }
public async Task CanCreateRoleWithSingletonManager() { var services = new ServiceCollection(); services.AddEntityFramework().AddInMemoryStore(); services.AddTransient<InMemoryContext>(); services.AddTransient<IRoleStore<IdentityRole>, RoleStore<IdentityRole, InMemoryContext>>(); services.AddIdentity<IdentityUser, IdentityRole>(); services.AddSingleton<RoleManager<IdentityRole>>(); var provider = services.BuildServiceProvider(); var manager = provider.GetRequiredService<RoleManager<IdentityRole>>(); Assert.NotNull(manager); IdentityResultAssert.IsSuccess(await manager.CreateAsync(new IdentityRole("someRole"))); }
public static IServiceProvider RegisterServices(IEnumerable<IViewLocator> viewLocators, IEnumerable<IStaticFileLocator> staticFileLocators) { // register types for IServiceProvider here var serviceCollection = new ServiceCollection(); serviceCollection.AddInstance(typeof(IEnumerable<IViewLocator>), viewLocators); serviceCollection.AddInstance(typeof(IEnumerable<IStaticFileLocator>), staticFileLocators); serviceCollection.AddTransient<IViewLocatorService, ViewLocatorService>(); serviceCollection.AddTransient<IStaticFileGeneratorService, StaticFileGeneratorService>(); serviceCollection.AddTransient<IControllerRewriterService, ControllerRewriterService>(); serviceCollection.AddTransient<IControllerGeneratorService, ControllerGeneratorService>(); serviceCollection.AddTransient<R4MvcGenerator, R4MvcGenerator>(); return serviceCollection.BuildServiceProvider(); }
private static IServiceCollection RegisterSystemTypes() { // // Register the system classes and grains in this method. // IServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddTransient<ManagementGrain>(); serviceCollection.AddTransient<GrainBasedMembershipTable>(); serviceCollection.AddTransient<GrainBasedReminderTable>(); serviceCollection.AddTransient<PubSubRendezvousGrain>(); serviceCollection.AddTransient<MemoryStorageGrain>(); return serviceCollection; }
// Composition root private IServiceProvider BuildServiceProvider(Options options, IConfigurationSection queueConfig) { var services = new ServiceCollection().AddLogging(); services.AddSingleton<IMessageHandlerFactory, MessageHandlerFactory>(); switch (options.QueueType) { case "zeromq": services.AddZeroMq(queueConfig); break; case "msmq": services.AddMsmq(queueConfig); break; case "azure": services.AddAzure(queueConfig); break; default: throw new Exception($"Could not resolve queue type {options.QueueType}"); } if (!string.IsNullOrWhiteSpace(options.Handler)) { services.AddTransient(typeof(IMessageHandler), Type.GetType(options.Handler)); } var provider = services.BuildServiceProvider(); // configure var loggerFactory = provider.GetRequiredService<ILoggerFactory>(); loggerFactory.MinimumLevel = LogLevel.Debug; loggerFactory.AddConsole(loggerFactory.MinimumLevel); return provider; }
public Task Invoke(HttpContext httpContext) { var services = new ServiceCollection(); services.AddTransient<TestService>(); httpContext.RequestServices = services.BuildServiceProvider(); return _next.Invoke(httpContext); }
public IServiceCollection DefineServices() { var services = new ServiceCollection(); services.AddSingleton<ICall, CallOne>(); services.AddScoped<ICall, CallTwo>(); services.AddTransient<ICall, CallThree>(); return services; }
public void ConfigureServices() { ServiceCollection sc = new ServiceCollection(); sc.AddEntityFramework() .AddSqlite() .AddDbContext<StarDbContext>(); sc.AddTransient<StarDbContext>(); sc.BuildServiceProvider(); }
// Need full wrap for generics like IOptions public WrappingServiceProvider(IServiceProvider fallback, IServiceCollection replacedServices) { var services = new ServiceCollection(); var manifest = fallback.GetRequiredService<IRuntimeServices>(); foreach (var service in manifest.Services) { services.AddTransient(service, sp => fallback.GetService(service)); } services.Add(replacedServices); _services = services.BuildServiceProvider(); }
public static IEnumerable<ServiceDescriptor> GetDefaultServices() { var services = new ServiceCollection(); // // Discovery & Reflection. // services.AddTransient<ITypeActivator, DefaultTypeActivator>(); services.AddTransient<ITypeSelector, DefaultTypeSelector>(); services.AddTransient<IAssemblyProvider, DefaultAssemblyProvider>(); services.AddTransient<ITypeService, DefaultTypeService>(); // TODO: consider making above singleton // // Context. // services.AddTransient(typeof(IContextData<>), typeof(ContextData<>)); // // Messages. // services.AddSingleton<IMessageConverter, DefaultMessageConverter>(); // // JSON.Net. // services.AddTransient<JsonSerializer, JsonSerializer>(); return services; }
// So ServiceProvider = Default IServiceProvider // Extensions are in Microsoft.Framework.DependencyInjection.Interfaces.ServiceProviderExtensions public void Main(string[] args) { IConfiguration configuration = new ConfigurationBuilder(Environment.CurrentDirectory).AddJsonFile("config.json").Build(); var azureConfig = ConfigurationBinder.Bind<AzureConfig>(configuration.GetConfigurationSection("Azure")); IServiceCollection services = new ServiceCollection(); services.AddTransient((service) => azureConfig); services.AddDocumentDbFun(); var provider = services.BuildServiceProvider(); var docDbRepo = provider.GetService<IDocumentDbRepository>(); //Task.WaitAll(docDbRepo.CreateDocDb()); var documents = docDbRepo.ReadDocuments(); }
public IServiceProvider CreateContainer(ShellSettings settings, ShellBlueprint blueprint) { ServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddScoped<IOrchardShell, DefaultOrchardShell>(); serviceCollection.AddScoped<IRouteBuilder, DefaultShellRouteBuilder>(); serviceCollection.AddInstance(settings); serviceCollection.AddInstance(blueprint.Descriptor); serviceCollection.AddInstance(blueprint); serviceCollection.AddMvc(); serviceCollection.Configure<RazorViewEngineOptions>(options => { var expander = new ModuleViewLocationExpander(); options.ViewLocationExpanders.Add(expander); }); var p = _serviceProvider.GetService<IOrchardLibraryManager>(); serviceCollection.AddInstance<IAssemblyProvider>(new DefaultAssemblyProviderTest(p, _serviceProvider, _serviceProvider.GetService<IAssemblyLoaderContainer>())); foreach (var dependency in blueprint.Dependencies) { foreach (var interfaceType in dependency.Type.GetInterfaces() .Where(itf => typeof(IDependency).IsAssignableFrom(itf))) { Logger.Debug("Type: {0}, Interface Type: {1}", dependency.Type, interfaceType); if (typeof(ISingletonDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddSingleton(interfaceType, dependency.Type); } else if (typeof(IUnitOfWorkDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddScoped(interfaceType, dependency.Type); } else if (typeof (ITransientDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddTransient(interfaceType, dependency.Type); } else { serviceCollection.AddScoped(interfaceType, dependency.Type); } } } //foreach (var item in blueprint.Controllers) { // var serviceKeyName = (item.AreaName + "/" + item.ControllerName).ToLowerInvariant(); // var serviceKeyType = item.Type; // serviceCollection.AddScoped(serviceKeyType); //} return BuildFallbackServiceProvider( serviceCollection, _serviceProvider); }
public static IServiceCollection GetDefaultServices() { var services = new ServiceCollection(); // // Options // services.AddTransient<IConfigureOptions<GlimpseAgentWebOptions>, GlimpseAgentWebOptionsSetup>(); services.AddSingleton<IRequestIgnorerUriProvider, DefaultRequestIgnorerUriProvider>(); services.AddSingleton<IRequestIgnorerStatusCodeProvider, DefaultRequestIgnorerStatusCodeProvider>(); services.AddSingleton<IRequestIgnorerContentTypeProvider, DefaultRequestIgnorerContentTypeProvider>(); services.AddSingleton<IRequestIgnorerProvider, DefaultRequestIgnorerProvider>(); services.AddSingleton<IRequestProfilerProvider, DefaultRequestProfilerProvider>(); return services; }
private IServiceProvider CreateFooServiceProvider(int count) { var serviceCollection = new ServiceCollection(); if (count > 0) { serviceCollection.AddTransient<IFoo, Foo1>(); } if (count > 1) { serviceCollection.AddTransient<IFoo, Foo2>(); } return serviceCollection.BuildServiceProvider(); }
public static IServiceCollection DefaultServices() { var services = new ServiceCollection(); services.AddTransient<IFakeService, FakeService>(); services.AddTransient<IFakeMultipleService, FakeOneMultipleService>(); services.AddTransient<IFakeMultipleService, FakeTwoMultipleService>(); services.AddTransient<IFakeOuterService, FakeOuterService>(); services.AddInstance<IFakeServiceInstance>(new FakeService() { Message = "Instance" }); services.AddScoped<IFakeScopedService, FakeService>(); services.AddSingleton<IFakeSingletonService, FakeService>(); services.AddTransient<IDependOnNonexistentService, DependOnNonexistentService>(); services.AddTransient<IFakeOpenGenericService<string>, FakeService>(); services.AddTransient(typeof(IFakeOpenGenericService<>), typeof(FakeOpenGenericService<>)); services.AddTransient<IFactoryService>(provider => { var fakeService = provider.GetService<IFakeService>(); return new TransientFactoryService { FakeService = fakeService, Value = 42 }; }); services.AddScoped(provider => { var fakeService = provider.GetService<IFakeService>(); return new ScopedFactoryService { FakeService = fakeService, }; }); services.AddScoped<ClassWithNestedReferencesToProvider>(); services.AddTransient<ServiceAcceptingFactoryService, ServiceAcceptingFactoryService>(); return services; }
private IServiceProvider BuildServices() { var services = new ServiceCollection(); services.AddLogging(); services.AddTransient<Push>(); services.AddTransient<Pull>(); services.AddTransient<Request>(); services.AddTransient<Response>(); services.AddTransient<Publisher>(); services.AddTransient<Subscriber>(); return services.BuildServiceProvider(); }
public IServiceProvider CreateContainer(ShellSettings settings, ShellBlueprint blueprint) { IServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddInstance(settings); serviceCollection.AddInstance(blueprint.Descriptor); serviceCollection.AddInstance(blueprint); foreach (var dependency in blueprint.Dependencies .Where(t => typeof(IModule).IsAssignableFrom(t.Type))) { _logger.LogDebug("IModule Type: {0}", dependency.Type); ((IModule)ActivatorUtilities .CreateInstance(_serviceProvider, dependency.Type)) .Configure(serviceCollection); } foreach (var dependency in blueprint.Dependencies .Where(t => !typeof(IModule).IsAssignableFrom(t.Type))) { foreach (var interfaceType in dependency.Type.GetInterfaces() .Where(itf => typeof(IDependency).IsAssignableFrom(itf))) { _logger.LogDebug("Type: {0}, Interface Type: {1}", dependency.Type, interfaceType); if (typeof(ISingletonDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddSingleton(interfaceType, dependency.Type); } else if (typeof(IUnitOfWorkDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddScoped(interfaceType, dependency.Type); } else if (typeof(ITransientDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddTransient(interfaceType, dependency.Type); } else { serviceCollection.AddScoped(interfaceType, dependency.Type); } } } return new WrappingServiceProvider(_serviceProvider, serviceCollection); }
public static IServiceCollection GetDefaultServices() { var services = new ServiceCollection(); // // Broker // services.AddSingleton<IServerBroker, DefaultServerBroker>(); services.AddSingleton<IClientBroker, DefaultClientBroker>(); // // Store // services.AddSingleton<IStorage, InMemoryStorage>(); // // Options // services.AddTransient<IConfigureOptions<GlimpseServerWebOptions>, GlimpseServerWebOptionsSetup>(); services.AddSingleton<IAllowRemoteProvider, DefaultAllowRemoteProvider>(); return services; }
private ServiceCollection SetupInitialServices() { var serviceCollection = new ServiceCollection(); #if DNX451 || DNXCORE50 var manifest = _serviceProvider.GetRequiredService<IServiceManifest>(); if (manifest != null) { foreach (var service in manifest.Services) { serviceCollection.AddTransient( service, sp => _serviceProvider.GetService(service)); } } #endif var loggerFactory = new LoggerFactory(); loggerFactory.AddProvider(_loggerProvider); var logger = loggerFactory.CreateLogger<DatabaseTool>(); serviceCollection.AddScoped(typeof(ILogger), sp => logger); serviceCollection.AddScoped<IFileService, FileSystemFileService>(); return serviceCollection; }
public async Task Can_register_context_with_DI_container_and_have_it_injected() { var serviceCollection = new ServiceCollection(); serviceCollection .AddEntityFramework() .AddSqlServer(); var serviceProvider = serviceCollection .AddTransient<NorthwindContext>() .AddTransient<MyController>() .BuildServiceProvider(); using (await SqlServerNorthwindContext.GetSharedStoreAsync()) { await serviceProvider.GetRequiredService<MyController>().TestAsync(); } }
public IServiceProvider CreateContainer(ShellSettings settings, ShellBlueprint blueprint) { ServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddScoped<IOrchardShell, DefaultOrchardShell>(); serviceCollection.AddScoped<IRouteBuilder, DefaultShellRouteBuilder>(); serviceCollection.AddInstance(settings); serviceCollection.AddInstance(blueprint.Descriptor); serviceCollection.AddInstance(blueprint); foreach (var dependency in blueprint.Dependencies .Where(t => typeof (IModule).IsAssignableFrom(t.Type))) { Logger.Debug("IModule Type: {0}", dependency.Type); // TODO: Rewrite to get rid of reflection. var instance = (IModule) Activator.CreateInstance(dependency.Type); instance.Configure(serviceCollection); } foreach (var dependency in blueprint.Dependencies .Where(t => !typeof(IModule).IsAssignableFrom(t.Type))) { foreach (var interfaceType in dependency.Type.GetInterfaces() .Where(itf => typeof(IDependency).IsAssignableFrom(itf))) { Logger.Debug("Type: {0}, Interface Type: {1}", dependency.Type, interfaceType); if (typeof(ISingletonDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddSingleton(interfaceType, dependency.Type); } else if (typeof(IUnitOfWorkDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddScoped(interfaceType, dependency.Type); } else if (typeof(ITransientDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddTransient(interfaceType, dependency.Type); } else { serviceCollection.AddScoped(interfaceType, dependency.Type); } } } return new WrappingServiceProvider(_serviceProvider, serviceCollection); }
public void Can_inject_different_configurations_into_different_contexts_without_declaring_in_constructor() { var blogOptions = new EntityOptionsBuilder<InjectDifferentConfigurationsNoConstructorBlogContext>(); blogOptions.UseInMemoryStore(); var accountOptions = new EntityOptionsBuilder<InjectDifferentConfigurationsNoConstructorAccountContext>(); accountOptions.UseInMemoryStore(); var services = new ServiceCollection(); services.AddTransient<InjectDifferentConfigurationsNoConstructorBlogContext>() .AddTransient<InjectDifferentConfigurationsNoConstructorAccountContext>() .AddTransient<InjectDifferentConfigurationsNoConstructorBlogController>() .AddTransient<InjectDifferentConfigurationsNoConstructorAccountController>() .AddInstance(blogOptions.Options) .AddInstance(accountOptions.Options) .AddEntityFramework() .AddInMemoryStore(); var serviceProvider = services.BuildServiceProvider(); serviceProvider.GetRequiredService<InjectDifferentConfigurationsNoConstructorBlogController>().Test(); serviceProvider.GetRequiredService<InjectDifferentConfigurationsNoConstructorAccountController>().Test(); }
public void Cannot_inject_different_configurations_into_different_contexts_both_as_base_type_without_constructor() { var blogOptions = new EntityOptionsBuilder<InjectDifferentConfigurationsNoConstructorBlogContext>(); blogOptions.UseInMemoryStore(); var accountOptions = new EntityOptionsBuilder<InjectDifferentConfigurationsNoConstructorAccountContext>(); accountOptions.UseInMemoryStore(); var services = new ServiceCollection(); services.AddTransient<InjectDifferentConfigurationsNoConstructorBlogContext>() .AddTransient<InjectDifferentConfigurationsNoConstructorAccountContext>() .AddTransient<InjectDifferentConfigurationsNoConstructorBlogController>() .AddTransient<InjectDifferentConfigurationsNoConstructorAccountController>() .AddInstance<EntityOptions>(blogOptions.Options) .AddInstance<EntityOptions>(accountOptions.Options) .AddEntityFramework() .AddInMemoryStore(); var serviceProvider = services.BuildServiceProvider(); Assert.Equal( CoreStrings.NonGenericOptions, Assert.Throws<InvalidOperationException>( () => serviceProvider.GetRequiredService<InjectDifferentConfigurationsNoConstructorBlogController>().Test()).Message); }
public void Can_register_configuration_with_DI_container_and_have_it_injected() { var optionsBuilder = new EntityOptionsBuilder(); optionsBuilder.UseInMemoryStore(persist: false); var services = new ServiceCollection(); services.AddTransient<InjectConfigurationBlogContext>() .AddTransient<InjectConfigurationController>() .AddInstance(optionsBuilder.Options) .AddEntityFramework() .AddInMemoryStore(); var serviceProvider = services.BuildServiceProvider(); serviceProvider.GetRequiredService<InjectConfigurationController>().Test(); }
public void Can_register_context_with_DI_container_and_have_it_injected() { var services = new ServiceCollection(); services.AddTransient<InjectContextBlogContext>() .AddTransient<InjectContextController>() .AddEntityFramework() .AddInMemoryStore(); var serviceProvider = services.BuildServiceProvider(); serviceProvider.GetRequiredService<InjectContextController>().Test(); }
public async Task Can_register_configuration_with_DI_container_and_have_it_injected() { var optionsBuilder = new DbContextOptionsBuilder(); optionsBuilder.UseSqlServer(SqlServerNorthwindContext.ConnectionString); var serviceCollection = new ServiceCollection(); serviceCollection .AddEntityFramework() .AddSqlServer(); serviceCollection .AddTransient<NorthwindContext>() .AddTransient<MyController>() .AddInstance(optionsBuilder.Options); var serviceProvider = serviceCollection.BuildServiceProvider(); using (await SqlServerNorthwindContext.GetSharedStoreAsync()) { await serviceProvider.GetRequiredService<MyController>().TestAsync(); } }
public void Can_inject_different_configurations_into_different_contexts_without_declaring_in_constructor() { var blogOptions = new DbContextOptions<BlogContext>().UseInMemoryStore(); var accountOptions = new DbContextOptions<AccountContext>().UseInMemoryStore(); var services = new ServiceCollection(); services.AddTransient<BlogContext>() .AddTransient<AccountContext>() .AddTransient<MyBlogController>() .AddTransient<MyAccountController>() .AddInstance(blogOptions) .AddInstance(accountOptions) .AddEntityFramework() .AddInMemoryStore(); var serviceProvider = services.BuildServiceProvider(); serviceProvider.GetService<MyBlogController>().Test(); serviceProvider.GetService<MyAccountController>().Test(); }
public void Can_register_configuration_with_DI_container_and_have_it_injected() { var options = new DbContextOptions().UseInMemoryStore(); var services = new ServiceCollection(); services.AddTransient<BlogContext>() .AddTransient<MyController>() .AddInstance(options) .AddEntityFramework() .AddInMemoryStore(); var serviceProvider = services.BuildServiceProvider(); serviceProvider.GetService<MyController>().Test(); }