private static IKeyedServiceRegister GetRegistrar() { var registrar = new KeyedServiceRegistrar(new ServiceCollection()); registrar.Add <IMyService, MyService1>(AvailableServices.Service1); registrar.Add <IMyService, MyService2>(AvailableServices.Service2); registrar.Add <IMyService, MyService1>("Service1"); registrar.Add <IMyService, MyService2>("Service2"); return(registrar); }
public void Services() { // Arrange var serviceCollection = new ServiceCollection(); // Act var keyedSvcRegistrar = new KeyedServiceRegistrar(serviceCollection); var actualServices = keyedSvcRegistrar.Services; // Assert Assert.That(actualServices, Is.SameAs(serviceCollection)); }
public void LookUp_DoesNotExist() { // Arrange var services = new ServiceCollection(); var registrar = new KeyedServiceRegistrar(services); // Act registrar.Add <IMyService, MyService1>("MY_KEY"); Type t = registrar.LookUp <IMyService>("DOES_NOT_EXIST"); // Assert Assert.That(t, Is.Null); }
public void Add_LookUp() { // Arrange var services = new ServiceCollection(); var registrar = new KeyedServiceRegistrar(services); // Act registrar.Add <IMyService, MyService1>("MY_KEY"); Type t = registrar.LookUp <IMyService>("MY_KEY"); // Assert Assert.That(t, Is.EqualTo(typeof(MyService1))); }
public void Add_InterfaceIsNull() { // Arrange var serviceCollection = new ServiceCollection(); var registrar = new KeyedServiceRegistrar(serviceCollection); // Act // ReSharper disable once AssignNullToNotNullAttribute var ex = Assert.Throws <ArgumentNullException>(() => registrar.Add(null, typeof(MyService1), "KEY")); // Assert Assert.That(ex.ParamName, Is.EqualTo("interfaceType")); }
public void LookUp_InterfaceTypeIsNull() { // Arrange var serviceCollection = new ServiceCollection(); var registrar = new KeyedServiceRegistrar(serviceCollection); // Act // ReSharper disable once MustUseReturnValue // ReSharper disable once AssignNullToNotNullAttribute var ex = Assert.Throws <ArgumentNullException>(() => registrar.LookUp(null, key: "KEY")); // Assert Assert.That(ex.ParamName, Is.EqualTo("interfaceType")); }
public void AddScoped() { // Arrange var services = new ServiceCollection(); var registrar = new KeyedServiceRegistrar(services); // Act registrar.AddScoped <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.SameAs(svc2)); }
public void RegistersTypes() { // Arrange var serviceCollection = new ServiceCollection(); var keyedSvcRegistrar = new KeyedServiceRegistrar(serviceCollection); var services = serviceCollection.BuildServiceProvider(); // Act var registrar = services.GetService <IKeyedServiceRegistrar>(); var register = services.GetService <IKeyedServiceRegister>(); var factory = services.GetService <IKeyedServiceFactory>(); // Assert Assert.That(registrar, Is.SameAs(keyedSvcRegistrar)); Assert.That(register, Is.SameAs(keyedSvcRegistrar)); Assert.That(factory, Is.InstanceOf <KeyedServiceFactory>()); }
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)); }
public void Resolve_Enumerable() { // Arrange var serviceCollection = new ServiceCollection(); var registrar = new KeyedServiceRegistrar(serviceCollection); registrar.Services.AddTransient <IMyService, MyService1>(AvailableServices.Service1); registrar.Services.AddTransient <IMyService, MyService2>(AvailableServices.Service2); serviceCollection.AddTransient <MyServiceHostArray>(); var services = serviceCollection.BuildServiceProvider(); // Act var host = services.GetService <MyServiceHostArray>(); // Assert Assert.That(host.Services, Has.Length.EqualTo(2)); Assert.That(host.Services[0], Is.InstanceOf <MyService1>()); Assert.That(host.Services[1], Is.InstanceOf <MyService2>()); }
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>()); }