private static void TestTransientNonGeneric(Func <AnyContainerBase> factory)
        {
            AnyContainerBase container = factory();

            container.RegisterTransient(typeof(ILogger), typeof(Logger));

            var instanceA = container.Resolve <ILogger>();
            var instanceB = container.Resolve <ILogger>();

            Assert.AreNotEqual(instanceA, instanceB);
        }
        private static void TestSingletonGeneric(Func <AnyContainerBase> factory)
        {
            AnyContainerBase container = factory();

            container.RegisterSingleton <ILogger, Logger>();

            var instanceA = container.Resolve <ILogger>();
            var instanceB = container.Resolve <ILogger>();

            Assert.AreEqual(instanceA, instanceB);
        }
        private static void TestFunc(Func <AnyContainerBase> factory)
        {
            bool functionCalled = false;

            AnyContainerBase container = factory();

            container.RegisterTransient <ILogger>(() =>
            {
                functionCalled = true;
                return(new Logger());
            });

            Assert.IsFalse(functionCalled);

            var logger = container.Resolve <ILogger>();

            Assert.IsTrue(functionCalled);
            Assert.IsNotNull(logger);
        }