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); }
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); }