示例#1
0
        public override object Resolve(CreationContext context, IReleasePolicy releasePolicy)
        {
            // 1. read from cache
            if (cachedBurden != null)
            {
                return(cachedBurden.Instance);
            }
            var instanceFromContext = context.GetContextualProperty(ComponentActivator);

            if (instanceFromContext != null)
            {
                //we've been called recursively, by some dependency from base.Resolve call
                return(instanceFromContext);
            }

            var initializing = false;

            try
            {
                initializing = init.ExecuteThreadSafeOnce();
                if (cachedBurden != null)
                {
                    return(cachedBurden.Instance);
                }
                var burden = CreateInstance(context, true);
                cachedBurden = burden;
                Track(burden, releasePolicy);
                return(burden.Instance);
            }
            finally
            {
                if (initializing)
                {
                    init.EndThreadSafeOnceSection();
                }
            }
        }
 public object GetContextInstance(CreationContext context)
 {
     return(context.GetContextualProperty(ComponentActivator));
 }
 public object GetContextInstance(CreationContext context)
 {
     return(context.GetContextualProperty(DefaultComponentActivator.InstanceStash));
 }