public override void Execute(InjectionContext <DummyClass> context)
        {
            IObjectRegistration p1;
            ContainerOption     p2;
            ILifetimeScope      p3;

            _parameterMerger.Merge(context, out p1, out p2, out p3);
            var dummyClass = new DummyClass(p1, p2, p3);

            InjectInstanceIntoContext(context, dummyClass);

            Parameter parameter;

            _f0.CreateObject(context, out parameter);
            dummyClass.Parameter = parameter;

            ContainerOption option;

            _f1.CreateObject(context, out option);

            IObjectContainer container;

            _f2.CreateObject(context, out container);

            dummyClass.SetProperties(option, container);
        }
        public void Merge(InjectionContext context, out T0 param0)
        {
            var myParams = context.Parameters;

            if (myParams == null || myParams.Length == 0)
            {
                _depProvider0.CreateObject(context, out param0);
                return;
            }

            var paramLength = myParams.Length;

            if (paramLength != 1)
            {
                throw ParameterNumberExceeds(context, 1, paramLength);
            }

            switch (myParams.ParameterKind)
            {
            case ParameterKind.Positional:
                param0 = GetPositionalDependencyObject(_depProvider0, myParams[0], context);
                break;

            case ParameterKind.Named:
                param0 = GetNamedDependencyObject(_depProvider0, myParams, context);
                break;

            default:
                throw new ImpossibleException();
            }
        }
        protected static T GetPositionalDependencyObject <T>(DependencyProvider <T> dependencyProvider, Parameter positionalParameter, InjectionContext context)
        {
            T result;

            if (positionalParameter.CanSupplyValueFor(dependencyProvider))
            {
                result = (T)positionalParameter.ParameterValue;
            }
            else
            {
                dependencyProvider.CreateObject(context, out result);
            }
            return(result);
        }
Exemplo n.º 4
0
        public override void Execute(object target, InjectionContext context)
        {
            object instance;

            _depProvider.CreateObject(context, out instance);

            try
            {
                _propertySetMethod.Invoke(target, new object[] { instance });
            }
            catch (TargetInvocationException ex)
            {
                throw ex.InnerException;
            }
        }
        protected static T GetNamedDependencyObject <T>(DependencyProvider <T> dependencyProvider, ParameterSet namedParameters, InjectionContext context)
        {
            T   result;
            var named0 = GetNamedParameter(dependencyProvider, namedParameters);

            if (named0 != null)
            {
                result = (T)named0.ParameterValue;
            }
            else
            {
                dependencyProvider.CreateObject(context, out result);
            }
            return(result);
        }