Exemplo n.º 1
0
 public void Register(TypeRegistration typeRegistration)
 {
     lock (_syncRoot)
     {
         _registrations.Add(typeRegistration);
     }
 }
Exemplo n.º 2
0
        public void RegisterSingle(TypeRegistration typeRegistration)
        {
            lock (_syncRoot)
            {
                var newRegistrations = _registrations.Where(x => x.RegistrationType != typeRegistration.RegistrationType).ToList();
                newRegistrations.Add(typeRegistration);

                _registrations.Clear();
                _registrations.AddRange(newRegistrations);
            }
        }
        private object CreateInstanceFor(TypeRegistration typeRegistration)
        {
            EnsureTypeIsSafe(typeRegistration.ImplementationType);

            object Factory(TypeRegistration x) => Activator.CreateInstance(x.ImplementationType);

            var result = typeRegistration.Lifetime == Lifetime.Singleton
                ? _singletones.GetOrAdd(typeRegistration.RegistrationType, x => Factory(typeRegistration))
                : Factory(typeRegistration);

            return(result);
        }