/// <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); }