public override object Resolve(CreationContext context, Burden burden, IReleasePolicy releasePolicy)
{
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;
}
object instance;
lock (ComponentActivator)
{
if (cachedBurden != null)
{
return cachedBurden.Instance;
}
instance = base.CreateInstance(context, burden);
cachedBurden = burden;
}
Track(burden, releasePolicy);
return instance;
}