Пример #1
0
        public void MultipleRegistersStillProducesCorrectResult()
        {
            DependencyMap injector = new DependencyMap();

            injector.Register <ITestInterface, TestClass>();
            injector.Register <ITestInterface, TestClass>();
            object actualClass = injector.Resolve <ITestInterface>();

            AssertResolution(actualClass, typeof(TestClass));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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}"
                );
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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);
        }