Ejemplo n.º 1
0
        /// <summary>
        /// Configure the component so that any properties whose types are registered in the
        /// container will be wired to instances of the appropriate service.
        /// </summary>
        /// <param name="wiringFlags">Set wiring options such as circular dependency wiring support.</param>
        /// <returns>A registration builder allowing further configuration of the component.</returns>
        public IRegistrationBuilder <TLimit, TActivatorData, TRegistrationStyle> PropertiesAutowired(PropertyWiringFlags wiringFlags)
        {
            var injector = new AutowiringPropertyInjector();

            var allowCircularDependencies = 0 != (int)(wiringFlags & PropertyWiringFlags.AllowCircularDependencies);
            var preserveSetValues         = 0 != (int)(wiringFlags & PropertyWiringFlags.PreserveSetValues);

            if (allowCircularDependencies)
            {
                RegistrationData.ActivatedHandlers.Add((s, e) => injector.InjectProperties(e.Context, e.Instance, !preserveSetValues));
            }
            else
            {
                RegistrationData.ActivatingHandlers.Add((s, e) => injector.InjectProperties(e.Context, e.Instance, !preserveSetValues));
            }

            return(this);
        }
        public IRegistrationBuilder <TLimit, TActivatorData, TRegistrationStyle> PropertiesAutowired(PropertyWiringFlags wiringFlags)
        {
            AutowiringPropertyInjector injector = new AutowiringPropertyInjector();
            bool flag = PropertyWiringFlags.Default != (wiringFlags & PropertyWiringFlags.AllowCircularDependencies);
            bool preserveSetValues = PropertyWiringFlags.Default != (wiringFlags & PropertyWiringFlags.PreserveSetValues);

            if (flag)
            {
                this.RegistrationData.ActivatedHandlers.Add(delegate(object s, ActivatedEventArgs <object> e) {
                    injector.InjectProperties(e.Context, e.Instance, !preserveSetValues);
                });
            }
            else
            {
                this.RegistrationData.ActivatingHandlers.Add(delegate(object s, ActivatingEventArgs <object> e) {
                    injector.InjectProperties(e.Context, e.Instance, !preserveSetValues);
                });
            }
            return(this);
        }