コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
                }
            }
        }