Пример #1
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);
        }
        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);
        }
Пример #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 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);
        }
Пример #5
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);
        }
Пример #6
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);
            }
        }