// This constructor needs to be public. It is called using reflection. public ContainerControlledCollection(Container container) { this.container = container; this.producers = new LazyEx <InstanceProducer[]>(() => this.lazyProducers.Select(p => p.Value).ToArray()); }
// This constructor is called when we're in 'flowing' mode, because in that case we need to set the // scope before forwarding the call to InstanceProducers. protected ContainerControlledCollection( Container container, ContainerControlledCollection <TService> definition) { this.container = container; // Reference the producers from the definition. This doesn't cause any new objects. this.lazyProducers = definition.lazyProducers; this.producers = definition.producers; }
private static object VerifyCreatingProducer(LazyEx <InstanceProducer> lazy) { try { // We only check if the instance producer can be created. We don't verify building of the // expression. That will be done up the call stack. return(lazy.Value); } catch (Exception ex) { throw new InvalidOperationException( StringResources.ConfigurationInvalidCreatingInstanceFailed(typeof(TService), ex), ex); } }