public void TypeBasedOverrideWithConstructorDefaultFromConfig()
        {
            ParameterOverride overrideParam = new ParameterOverride("value", 222);
            TypeBasedOverride overrideDecorator = new TypeBasedOverride(typeof(TypeToInject2ForTypeOverride), overrideParam);

            IUnityContainer container = ConfigurationFixtureBase.GetContainer(@"ConfigFiles\TypeOverride.config", "TypeOverrideContainer");

            var defaultResult = container.Resolve<TypeToUndergoeTypeBasedInject1>("TestTypeOverrideDefaultInConfiguration");
            var overrideResult = container.Resolve<TypeToUndergoeTypeBasedInject1>("TestTypeOverrideDefaultInConfiguration", overrideDecorator);

            Assert.AreEqual<int>(101, defaultResult.IForTypeToInject.Value);
            Assert.AreEqual<int>(222, overrideResult.IForTypeToInject.Value);
        }
示例#2
0
        public void TypeBasedOverrideWithBuildUp()
        {
            MySimpleType instance = new MySimpleType();
            instance.X = 111;

            PropertyOverride overrideParam = new PropertyOverride("X", 222);
            TypeBasedOverride overrideDecorator = new TypeBasedOverride(typeof(MySimpleType), overrideParam);

            UnityContainer container = new UnityContainer();

            var result = container.BuildUp<MySimpleType>(instance, overrideDecorator);
            Assert.AreEqual<int>(222, result.X);
        }
示例#3
0
        public void TypeBasedOverrideWithConstructorExactTypeMatch()
        {
            TypeToInject2ForTypeOverride defaultValue = new TypeToInject2ForTypeOverride(111);
            TypeToInject2ForTypeOverride overrideValue = new TypeToInject2ForTypeOverride(222);
            ParameterOverride overrideParam = new ParameterOverride("injectedObject", overrideValue);
            TypeBasedOverride overrideDecorator = new TypeBasedOverride(typeof(TypeToToUndergoeTypeBasedInject2), overrideParam);

            IUnityContainer container = new UnityContainer();

            container.RegisterType<IForToUndergoeInject, TypeToToUndergoeTypeBasedInject2>(new InjectionConstructor(defaultValue));
            var result = container.Resolve<IForToUndergoeInject>(overrideDecorator);

            Assert.AreEqual<int>(222, result.IForTypeToInject.Value);
        }
示例#4
0
        public void TypeBasedOverrideInjectsDependentTypeProperty()
        {
            ParameterOverride overrideParam = new ParameterOverride("value", 222);
            PropertyOverride overrideProp = new PropertyOverride("PropertyToInject", "TestOverrideProp");
            TypeBasedOverride typeOverrideConstructor = new TypeBasedOverride(typeof(TypeToInject3ForTypeOverride), overrideParam);
            TypeBasedOverride typeOverrideProp = new TypeBasedOverride(typeof(TypeToInject3ForTypeOverride), overrideProp);

            IUnityContainer container = new UnityContainer();

            container.RegisterType<TypeToUndergoeTypeBasedInject1>().RegisterType<IForTypeToInject, TypeToInject3ForTypeOverride>(new InjectionConstructor(111), new InjectionProperty("PropertyToInject", "DefaultValue"));
            var result = container.Resolve<TypeToUndergoeTypeBasedInject1>(typeOverrideConstructor, typeOverrideProp);
            TypeToInject3ForTypeOverride overriddenProperty = (TypeToInject3ForTypeOverride)result.IForTypeToInject;

            Assert.AreEqual<int>(222, overriddenProperty.Value);
            Assert.AreEqual<string>("TestOverrideProp", overriddenProperty.PropertyToInject);
        }
示例#5
0
        public void TypeBasedOverrideWithResolveAll()
        {
            IForTypeToInject defaultValue = new TypeToInject1ForTypeOverride(111);
            IForTypeToInject overrideValue = new TypeToInject1ForTypeOverride(222);
            ParameterOverride overrideParam = new ParameterOverride("injectedObject", overrideValue);
            TypeBasedOverride overrideDecorator = new TypeBasedOverride(typeof(TypeToUndergoeTypeBasedInject1), overrideParam);

            IUnityContainer container = new UnityContainer();

            container.RegisterType<IForToUndergoeInject, TypeToUndergoeTypeBasedInject1>(new InjectionConstructor(defaultValue)).RegisterType<IForToUndergoeInject, TypeToUndergoeTypeBasedInject1>("Named", new InjectionConstructor(defaultValue));
            var resultList = container.ResolveAll<IForToUndergoeInject>(overrideDecorator);

            foreach (var result in resultList)
            {
                Assert.AreEqual<int>(222, result.IForTypeToInject.Value);
            }
        }
示例#6
0
        public void TypeBasedOverrideInjectsDependentTypeConstructor()
        {
            ParameterOverride overrideParam = new ParameterOverride("value", 222);
            TypeBasedOverride overrideDecorator = new TypeBasedOverride(typeof(TypeToInject2ForTypeOverride), overrideParam);

            IUnityContainer container = new UnityContainer();

            container.RegisterType<TypeToToUndergoeTypeBasedInject2>().RegisterType<TypeToInject2ForTypeOverride>(new InjectionConstructor(111));
            var result = container.Resolve<TypeToToUndergoeTypeBasedInject2>(overrideDecorator);

            Assert.AreEqual<int>(222, result.IForTypeToInject.Value);
        }