public void RegisterType <Abstract, Concrete>(bool singleton)
            where Concrete : Abstract
        {
            var concreteType = typeof(Concrete);
            var abstractType = typeof(Abstract);

            if (!_resolvers.ContainsKey(concreteType))
            {
                RegisterType(singleton, concreteType);
            }

            _resolvers[abstractType] = new AbstractTypeResolver(concreteType, this);
        }
        public void CallsContainerToResolveTypes()
        {
            var mockContainer    = new Mock <IContainer>();
            var expectedInstance = new object();

            mockContainer
            .Setup(x => x.Resolve(typeof(object)))
            .Returns(expectedInstance);

            var resolver = new AbstractTypeResolver(typeof(object), mockContainer.Object);

            Assert.AreEqual(expectedInstance, resolver.Resolve());
        }