示例#1
0
        public object Get(IContextual contextual, ICreationalContext creationalContext)
        {
            if (!IsActive)
            {
                throw new ContextNotActiveException(Scope);
            }
            var store = ComponentStore;

            if (store == null)
            {
                return(null);
            }
            if (contextual == null)
            {
                throw new ArgumentNullException("contextual");
            }

            var contextualStore = Container.Instance.ContextualStore;
            var id       = contextualStore.PutIfAbsent(contextual);
            var instance = store.GetOrPut(id, _ =>
            {
                var i = contextual.Create(creationalContext);
                return(new SerializableContextualInstance(contextual, i, creationalContext, contextualStore));
            });

            if (instance != null)
            {
                return(instance.Instance);
            }
            return(null);
        }
示例#2
0
 public object Get(IContextual contextual, ICreationalContext creationalContext)
 {
     if (!IsActive)
     {
         throw new ContextNotActiveException(Scope);
     }
     if (creationalContext != null)
     {
         var instance    = contextual.Create(creationalContext);
         var weldContext = creationalContext as IWeldCreationalContext;
         if (weldContext != null)
         {
             AddDependentInstance(instance, contextual, weldContext);
         }
         return(instance);
     }
     return(null);
 }