示例#1
0
        public static void AssembleProperties( object instance, IComponentModel model, 
			object key, ResolveTypeHandler resolver )
        {
            AssertUtil.ArgumentNotNull( model, "model" );
            AssertUtil.ArgumentNotNull( resolver, "resolver" );

            foreach( PropertyInfo property in model.ConstructionModel.SelectedProperties )
            {
                Type service = property.PropertyType;
                String propertyName = property.Name;

                object value = Resolve( model, service, propertyName, key, resolver );

                if (value != null)
                {
                    property.SetValue( instance, value, null );
                }
            }
        }
示例#2
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="model"></param>
        /// <param name="resolver"></param>
        /// <returns></returns>
        public static object[] BuildConstructorArguments( 
			IComponentModel model, object key, ResolveTypeHandler resolver )
        {
            AssertUtil.ArgumentNotNull( model, "model" );
            AssertUtil.ArgumentNotNull( resolver, "resolver" );

            ParameterInfo[] parameters = model.ConstructionModel.SelectedConstructor.GetParameters();
            object[] args = new object[ parameters.Length ];

            for(int i=0; i < args.Length; i++)
            {
                ParameterInfo parameter = parameters[i];
                Type service = parameter.ParameterType;
                String argumentName = parameter.Name;

                object value = Resolve( model, service, argumentName, key, resolver );

                args[ parameter.Position ] = value;
            }

            return args;
        }
示例#3
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="model"></param>
        /// <param name="type"></param>
        /// <param name="argumentOrPropertyName"></param>
        /// <param name="resolver"></param>
        /// <returns></returns>
        private static object Resolve( 
			IComponentModel model, Type type, 
			String argumentOrPropertyName, object key, ResolveTypeHandler resolver  )
        {
            if (IsLogger( type ))
            {
                return model.Logger;
            }
            if (IsContext( type ))
            {
                return model.Context;
            }
            if (IsConfiguration( type ))
            {
                return model.Configuration;
            }

            object value = null;

            resolver( model, type, argumentOrPropertyName, key, out value );

            return value;
        }