Castle.MicroKernel.Lifestyle.SingletonLifestyleManager.Resolve C# (CSharp) Method

Resolve() public method

public Resolve ( CreationContext context, IReleasePolicy releasePolicy ) : object
context Castle.MicroKernel.Context.CreationContext
releasePolicy IReleasePolicy
return object
		public override object Resolve(CreationContext context, IReleasePolicy releasePolicy)
		{
			// 1. read from cache
			if (cachedBurden != null)
			{
				return cachedBurden.Instance;
			}
			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();
				}
			}
		}