public void NestedContainerOverrideInParentDoesNotReturnOverridenInChildAcrossCalls() { IToWhichDependent overrideValue = new Type2ToWhichDependent(222); IUnityContainer container = new UnityContainer(); IUnityContainer childContainer = container.CreateChildContainer(); // Registering the parent default types. container.RegisterType <IDependingOnOtherType, Type1DependingOnOtherType>().RegisterType <IToWhichDependent, Type1ToWhichDependent>(new InjectionConstructor(111)); // Overriding the default values for the parent container. Type1DependingOnOtherType parentResult = (Type1DependingOnOtherType)container.Resolve <IDependingOnOtherType>(new DependencyOverride(typeof(IToWhichDependent), overrideValue)); // Resolving child container to the default type. Type1DependingOnOtherType childResult = (Type1DependingOnOtherType)childContainer.Resolve <IDependingOnOtherType>(); // The parent overriden values should be reflected. Assert.IsInstanceOfType(parentResult.IToWhichDependent, typeof(Type2ToWhichDependent)); Assert.IsInstanceOfType(parentResult.OneMoreIToWhichDependent, typeof(Type2ToWhichDependent)); Assert.AreEqual <int>(parentResult.IToWhichDependent.X, 222); // The parent default registered type should be reflected, since there are no type registered exclusively for the child container. Assert.IsInstanceOfType(childResult.IToWhichDependent, typeof(Type1ToWhichDependent)); Assert.IsInstanceOfType(childResult.OneMoreIToWhichDependent, typeof(Type1ToWhichDependent)); Assert.AreEqual <int>(childResult.IToWhichDependent.X, 111); }
public void DependencyOverrideWithNestedContainer() { IToWhichDependent defaultValue = new Type1ToWhichDependent(111); IToWhichDependent overrideValue3 = new Type2ToWhichDependent(333); IToWhichDependent overrideValue4 = new Type2ToWhichDependent(444); IUnityContainer container = new UnityContainer(); IUnityContainer childContainer = container.CreateChildContainer(); // Registering the parent default types. container.RegisterType <IDependingOnOtherType, Type1DependingOnOtherType>().RegisterType <IToWhichDependent, Type1ToWhichDependent>(new InjectionConstructor(111)); // Registering the child default types. childContainer.RegisterType <IDependingOnOtherType, Type1DependingOnOtherType>().RegisterType <IToWhichDependent, Type1ToWhichDependent>(new InjectionConstructor(222)); // Overriding the default values for the parent container. Type1DependingOnOtherType parentResult = (Type1DependingOnOtherType)container.Resolve <IDependingOnOtherType>(new DependencyOverride(typeof(IToWhichDependent), overrideValue3)); // Overriding the default values for the child container. Type1DependingOnOtherType childResult = (Type1DependingOnOtherType)childContainer.Resolve <IDependingOnOtherType>(new DependencyOverride(typeof(IToWhichDependent), overrideValue4)); // The parent overriden values should be reflected. Assert.IsInstanceOfType(parentResult.IToWhichDependent, typeof(Type2ToWhichDependent)); Assert.IsInstanceOfType(parentResult.OneMoreIToWhichDependent, typeof(Type2ToWhichDependent)); Assert.AreEqual <int>(parentResult.IToWhichDependent.X, 333); // The child overriden values should be reflected. Assert.IsInstanceOfType(childResult.IToWhichDependent, typeof(Type2ToWhichDependent)); Assert.IsInstanceOfType(childResult.OneMoreIToWhichDependent, typeof(Type2ToWhichDependent)); Assert.AreEqual <int>(childResult.IToWhichDependent.X, 444); }
public void DependencyOverridesTypeMismatchTest() { IToWhichDependent defaultValue = new Type1ToWhichDependent(111); IToWhichDependent overrideValue = new Type2ToWhichDependent(222); IUnityContainer container = new UnityContainer(); container.RegisterType <IDependingOnOtherType, Type1DependingOnOtherType>().RegisterType <IToWhichDependent, Type1ToWhichDependent>(new InjectionConstructor(111)); Type1DependingOnOtherType result = (Type1DependingOnOtherType)container.Resolve <IDependingOnOtherType>(new DependencyOverride(typeof(int), overrideValue)); }
public void DependencyOverridesAllMatchTest() { IToWhichDependent defaultValue = new Type1ToWhichDependent(111); IToWhichDependent overrideValue = new Type2ToWhichDependent(222); IUnityContainer container = new UnityContainer(); container.RegisterType <IDependingOnOtherType, Type1DependingOnOtherType>().RegisterType <IToWhichDependent, Type1ToWhichDependent>(new InjectionConstructor(111)); Type1DependingOnOtherType result = (Type1DependingOnOtherType)container.Resolve <IDependingOnOtherType>(new DependencyOverride(typeof(IToWhichDependent), overrideValue)); Assert.IsInstanceOfType(result.IToWhichDependent, typeof(Type2ToWhichDependent)); Assert.IsInstanceOfType(result.OneMoreIToWhichDependent, typeof(Type2ToWhichDependent)); }