internal Expression OnExpressionBuilding(Registration registration, Type serviceType, Type implementationType, Expression instanceCreatorExpression) { if (this.expressionBuilding != null) { var e = new ExpressionBuildingEventArgs(serviceType, implementationType, instanceCreatorExpression, registration.Lifestyle); var relationships = new KnownRelationshipCollection(registration.GetRelationships().ToList()); e.KnownRelationships = relationships; this.expressionBuilding(this, e); // Optimization. if (relationships.HasChanged) { registration.ReplaceRelationships(e.KnownRelationships); } return(e.Expression); } return(instanceCreatorExpression); }
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); } } }