private Expression BuildExpressionInternal() { // We must lock the container, because not locking could lead to race conditions. this.Container.LockContainer(); var expression = this.Registration.BuildExpression(this); if (expression == null) { throw new ActivationException(StringResources.RegistrationReturnedNullFromBuildExpression( this.Registration)); } var e = new ExpressionBuiltEventArgs(this.ServiceType, expression); e.Lifestyle = this.Lifestyle; e.InstanceProducer = this; e.ReplacedRegistration = this.Registration; this.Container.OnExpressionBuilt(e, this); if (!object.ReferenceEquals(this.Registration, e.ReplacedRegistration)) { this.Registration = e.ReplacedRegistration; } else { this.overriddenLifestyle = e.Lifestyle; } return(e.Expression); }
internal ExpressionBuiltEventArgs?OnExpressionBuilt( InstanceProducer instanceProducer, Expression expression) { if (this.expressionBuilt != null) { var relationships = new KnownRelationshipCollection(instanceProducer.GetRelationships().ToList()); var e = new ExpressionBuiltEventArgs( instanceProducer.ServiceType, expression, instanceProducer, replacedRegistration: instanceProducer.Registration, knownRelationships: relationships); this.expressionBuilt(this, e); if (relationships.HasChanged) { instanceProducer.ReplaceRelationships(e.KnownRelationships); } return(e); } else { return(null); } }
internal void OnExpressionBuilt(ExpressionBuiltEventArgs e, InstanceProducer instanceProducer) { if (this.expressionBuilt != null) { var relationships = new KnownRelationshipCollection(instanceProducer.GetRelationships().ToList()); e.KnownRelationships = relationships; this.expressionBuilt(this, e); if (relationships.HasChanged) { instanceProducer.ReplaceRelationships(e.KnownRelationships); } } }
private Expression BuildExpressionInternal() { // We must lock the container, because not locking could lead to race conditions. this.Registration.Container.LockContainer(); var expression = this.Registration.BuildExpression(this); if (expression == null) { throw new ActivationException(StringResources.RegistrationReturnedNullFromBuildExpression( this.Registration)); } var e = new ExpressionBuiltEventArgs(this.ServiceType, expression); e.Lifestyle = this.Lifestyle; e.InstanceProducer = this; e.ReplacedRegistration = this.Registration; this.Registration.Container.OnExpressionBuilt(e, this); if (!object.ReferenceEquals(this.Registration, e.ReplacedRegistration)) { this.Registration = e.ReplacedRegistration; } else { this.overriddenLifestyle = e.Lifestyle; } return e.Expression; }