public virtual object Invoke(ServiceProvider provider)
            {
                object resolved;

                lock (provider._sync)
                {
                    if (!provider._resolvedServices.TryGetValue(_key, out resolved))
                    {
                        resolved = provider.CaptureDisposable(_serviceCallSite.Invoke(provider));
                        provider._resolvedServices.Add(_key, resolved);
                    }
                }
                return(resolved);
            }
 public object Invoke(ServiceProvider provider)
 {
     return(provider.CaptureDisposable(_service.Invoke(provider)));
 }