public void AddServices_ByEnum() { // Arrange var serviceCollection = new ServiceCollection(); var registrar = new KeyedServiceRegistrar(serviceCollection); registrar.AddTransient <IMyService, MyService1>(AvailableServices.Service1); registrar.AddTransient <IMyService, MyService2>(AvailableServices.Service2); var services = serviceCollection.BuildServiceProvider(); // Act //// var factory = services.GetService<IKeyedServiceFactory>(); var service1 = services.GetService <IMyService>(AvailableServices.Service1); var service2 = services.GetService <IMyService>(AvailableServices.Service2); // Assert Assert.That(service1, Is.InstanceOf <MyService1>()); Assert.That(service2, Is.InstanceOf <MyService2>()); }
public void AddServices_ByName() { // Arrange var serviceCollection = new ServiceCollection(); var registrar = new KeyedServiceRegistrar(serviceCollection); registrar.AddTransient <IMyService, MyService1>("SERVICE1"); registrar.AddTransient <IMyService, MyService2>("SERVICE2"); var services = serviceCollection.BuildServiceProvider(); // Act var factory = services.GetService <IKeyedServiceFactory>(); var service1 = factory.GetService <IMyService>("SERVICE1"); var service2 = factory.GetService <IMyService>("SERVICE2"); // Assert Assert.That(service1, Is.InstanceOf <MyService1>()); Assert.That(service2, Is.InstanceOf <MyService2>()); }
public void Resolve_Func() { // Arrange var serviceCollection = new ServiceCollection(); var registrar = new KeyedServiceRegistrar(serviceCollection); registrar.AddTransient <IMyService, MyService1>(AvailableServices.Service1); registrar.AddTransient <IMyService, MyService2>(AvailableServices.Service2); serviceCollection.AddTransient <MyServiceHostFunc>(); serviceCollection.AddTransient <Func <object, IMyService> >(s => s.GetService <IMyService>); var services = serviceCollection.BuildServiceProvider(); // Act var host = services.GetService <MyServiceHostFunc>(); Assert.That(host.Factory, Is.Not.Null); var svc1 = host.Factory(AvailableServices.Service1); var svc2 = host.Factory(AvailableServices.Service2); // Assert Assert.That(svc1, Is.InstanceOf <MyService1>()); Assert.That(svc2, Is.InstanceOf <MyService2>()); }
public void AddTransient() { // Arrange var services = new ServiceCollection(); var registrar = new KeyedServiceRegistrar(services); // Act registrar.AddTransient <IMyService, MyService1>("MY_KEY"); var provider = services.BuildServiceProvider(); var svc1 = provider.GetService <IMyService>("MY_KEY"); var svc2 = provider.GetService <MyService1>(); // Assert Assert.That(svc1, Is.InstanceOf <MyService1>()); Assert.That(svc1, Is.Not.SameAs(svc2)); }
public void AddTransient_Delegate() { // Arrange var services = new ServiceCollection(); var registrar = new KeyedServiceRegistrar(services); // Act var svc = new MyService1(); registrar.AddTransient <IMyService, MyService1>("MY_KEY", s => svc); var provider = services.BuildServiceProvider(); var svc1 = provider.GetService <IMyService>("MY_KEY"); var svc2 = provider.GetService <MyService1>(); // Assert Assert.That(svc1, Is.SameAs(svc)); Assert.That(svc1, Is.SameAs(svc2)); }