/// <summary> /// Gets the component instance. Only one instance is created of the type /// </summary> /// <returns>a component instance</returns> /// <exception cref="PicoContainer.PicoInitializationException">if the component could not be instantiated.</exception> /*public override object ComponentInstance * { * get * { * if (instanceReference.Get() == null) * { * instanceReference.Set(base.ComponentInstance); * } * return instanceReference.Get(); * } * * }*/ public override object GetComponentInstance(IPicoContainer container) { if (instanceReference.Get() == null) { instanceReference.Set(base.GetComponentInstance(container)); } return(instanceReference.Get()); }
public void BuildContainer(IObjectReference containerRef, IObjectReference parentContainerRef, IList assemblies) { IMutablePicoContainer parent = GetInstanceFromReference(parentContainerRef); IMutablePicoContainer container = CreateContainer(parent, assemblies); // register the child in the parent so that lifecycle can be propagated down the hierarchy if (parent != null) { parent.UnregisterComponentByInstance(container); parent.RegisterComponentInstance(container, container); } ComposeContainer(container, assemblies); container.Start(); containerRef.Set(container); }