protected override Expression GetExpressionInternal(IContainerContext containerContext, IServiceRegistration serviceRegistration, ResolutionContext resolutionContext, Type resolveType) { if (!containerContext.ContainerConfigurator.ContainerConfiguration.CircularDependencyTrackingEnabled) { return(this.PrepareExpression(containerContext, serviceRegistration, resolutionContext, resolveType)); } if (resolutionContext.GetCircularDependencyBarrier(serviceRegistration.RegistrationNumber)) { throw new CircularDependencyException(resolveType); } resolutionContext.SetCircularDependencyBarrier(serviceRegistration.RegistrationNumber, true); var result = this.PrepareExpression(containerContext, serviceRegistration, resolutionContext, resolveType); resolutionContext.SetCircularDependencyBarrier(serviceRegistration.RegistrationNumber, false); return(result); }