public void MultipleRegistersStillProducesCorrectResult() { DependencyMap injector = new DependencyMap(); injector.Register <ITestInterface, TestClass>(); injector.Register <ITestInterface, TestClass>(); object actualClass = injector.Resolve <ITestInterface>(); AssertResolution(actualClass, typeof(TestClass)); }
public void DependencyResolutionSucceeds() { DependencyMap injector = new DependencyMap(); injector.Register <ITestInterface, TestClass>(); injector.Register(typeof(AnotherClass)); object actualClass = injector.Resolve(typeof(ITestInterface)); object anotherClass = injector.Resolve(typeof(AnotherClass)); AssertResolution(actualClass, typeof(TestClass)); AssertResolution(anotherClass, typeof(AnotherClass)); actualClass = injector.Resolve <ITestInterface>(); anotherClass = injector.Resolve <AnotherClass>(); AssertResolution(actualClass, typeof(TestClass)); AssertResolution(anotherClass, typeof(AnotherClass)); }
public void InnerDependenciesSucceeds() { DependencyMap injector = new DependencyMap(); injector.Register <IInterface, AnotherClass>(); var actualClass = (AnotherClass)injector.Resolve(typeof(IInterface)); AssertResolution(actualClass, typeof(AnotherClass)); Assert.True(actualClass.Blah == null); injector.Register <ITestInterface, TestClass>(); actualClass = (AnotherClass)injector.Resolve(typeof(IInterface)); Assert.True( actualClass.Blah.GetType() == typeof(TestClass), $"Expected {typeof(TestClass).Name}\nWas {actualClass.Blah.GetType().Name}" ); }
/// <summary> /// Registers services from the given list of <paramref name="assemblies"/>. /// </summary> /// <param name="assemblies">The list of assemblies that contain the service types.</param> /// <param name="map">The dependency map.</param> private void RegisterServicesFrom(IEnumerable <Assembly> assemblies, DependencyMap map) { var serviceList = GetServiceList(assemblies); var defaultServices = GetDefaultServices(serviceList); var registeredServices = new List <IServiceInfo>(); // Apply the service filter to the list of services // that will be added to the map Predicate <IServiceInfo> nullPredicate = info => true; Predicate <IServiceInfo> filter = ServiceFilter ?? nullPredicate; foreach (var service in defaultServices) { if (!filter(service)) { continue; } registeredServices.Add(service); } foreach (var list in serviceList.Values) { foreach (var service in list) { if (!filter(service)) { continue; } registeredServices.Add(service); } } // Register the enumerable types for each service type foreach (var serviceType in serviceList.Keys) { map.AddAsEnumerableService(serviceType); } map.Register(registeredServices); }
/// <summary> /// Registers services from the given list of <paramref name="assemblies"/>. /// </summary> /// <param name="assemblies">The list of assemblies that contain the service types.</param> /// <param name="map">The dependency map.</param> private void RegisterServicesFrom(IEnumerable<Assembly> assemblies, DependencyMap map) { var serviceList = GetServiceList(assemblies); var defaultServices = GetDefaultServices(serviceList); var registeredServices = new List<IServiceInfo>(); // Apply the service filter to the list of services // that will be added to the map Predicate<IServiceInfo> nullPredicate = info => true; Predicate<IServiceInfo> filter = ServiceFilter ?? nullPredicate; foreach (var service in defaultServices) { if (!filter(service)) continue; registeredServices.Add(service); } foreach (var list in serviceList.Values) { foreach (var service in list) { if (!filter(service)) continue; registeredServices.Add(service); } } map.Register(registeredServices); }