Exemplo n.º 1
0
 private object GetOrCreateInstance(Type serviceType, IRegistratedService registration)
 {
     if (registration.Lifetime == ServiceLifetime.Singleton && ContainerId != RootContainer.ContainerId)
     {
         return(RootContainer.GetService(serviceType));
     }
     if (TryGetSharedInstance(registration.Id, out var sharedInstance))
     {
         return(sharedInstance);
     }
     else
     {
         if (registration.IsShared)
         {
             var instance = CreateInstance(registration);
             _sharedInstances.TryAdd(registration.Id, instance);
             return(instance);
         }
         else
         {
             return(CreateInstance(registration));
         }
     }
 }