Esempio n. 1
0
        public void Test_Registration_And_Retrieving()
        {
            //  Creating DI container
            var container = ContainerFactory.Create();

            // Registration a class as an implementation of an interface
            container.RegisterImplementation <ISample, Sample>();

            // Retrieving registered implementation
            var instance = container.Get <ISample>();

            Assert.AreEqual(typeof(Sample), instance.GetType());

            // Registration as a singleton
            container.RegisterImplementation <ISingletonSample, SingletonSample>(Lifetime.PerContainer);
            var instance1 = container.Get <ISingletonSample>();
            var instance2 = container.Get <ISingletonSample>();

            Assert.AreSame(instance1, instance2);

            // Registration an instance of a class as an instance of an interface type
            var instanceSample = new InstanceSample();

            container.RegisterInstance <IInstanceSample, InstanceSample>(instanceSample);
            var retrievedInstance = container.Get <IInstanceSample>();

            Assert.AreSame(instanceSample, retrievedInstance);
        }
Esempio n. 2
0
        public void Test_Injection()
        {
            // Creating DI container
            var container = ContainerFactory.Create();

            // Registration of types and objects which will be injected
            container.RegisterImplementation <ISample, Sample>();
            var instanceSample = new InstanceSample();

            container.RegisterInstance <IInstanceSample, InstanceSample>(instanceSample);

            // Creating an instance without registering in DI container
            var instanceInjectSample = container.CreateInstance <InjectSample>();

            Assert.IsNotNull(instanceInjectSample.SampleProperty);
            Assert.AreSame(instanceSample, instanceInjectSample.InstanceSampleProperty);

            // Retrieving an instance with injection
            container.RegisterImplementation <IInjectSample, InjectSample>();
            var retrievedInstanceInjectSample = container.Get <IInjectSample>();

            Assert.IsNotNull(retrievedInstanceInjectSample.SampleProperty);
            Assert.AreSame(instanceSample, retrievedInstanceInjectSample.InstanceSampleProperty);
        }