Exemple #1
0
        /// <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);
		}