/// <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, Object assemblyScope) { IMutablePicoContainer parent = parentContainerRef == null ? null : parentContainerRef.Get() as IMutablePicoContainer; IMutablePicoContainer container = CreateContainer(parent, assemblyScope); // 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, assemblyScope); container.Start(); containerRef.Set(container); }
public void KillContainer(IObjectReference containerRef) { IMutablePicoContainer pico = containerRef == null ? null : containerRef.Get() as IMutablePicoContainer; try { if (pico != null) { pico.Stop(); pico.Dispose(); IMutablePicoContainer parent = pico.Parent as IMutablePicoContainer; if (parent != null) { parent.UnregisterComponentByInstance(pico); } } } finally { pico = null; } }
private IMutablePicoContainer GetInstanceFromReference(IObjectReference objectReference) { return objectReference == null ? null : objectReference.Get() as IMutablePicoContainer; }