public override object ResolveInstance(IResolveContext resolveContext)
        {
            if (_threadLocal.IsValueCreated == false)
            {
                _threadLocal.Value = resolveContext.CreateInstance();
            }

            return(_threadLocal.Value);
        }
        public override object ResolveInstance(IResolveContext resolveContext)
        {
            if (_instance != null)
            {
                return(_instance);
            }

            lock (this)
            {
                if (Volatile.Read(ref _instance) != null)
                {
                    return(_instance);
                }

                var instance = resolveContext.CreateInstance();
                Interlocked.MemoryBarrier();
                _instance = instance;
                return(_instance);
            }
        }
 /// <summary>
 ///     Always creates a new instance using the specified resolve context.
 /// </summary>
 public override object ResolveInstance(IResolveContext resolveContext)
 {
     return resolveContext.CreateInstance();
 }