Beispiel #1
0
        public Registration(Type serviceType, string key, Func <ResolutionContext, object> provider, RegistrationFlags flags)
        {
            Debug.Assert(!(serviceType is null));

            ServiceType = serviceType;
            Key         = key;
            Flags       = flags;

            if (IsSingleInstance)
            {
                _value = new LazyLoader(provider);
            }
            else
            {
                _value = provider;
            }
        }
Beispiel #2
0
        private void BindCore(Type type, string key, Func <ResolutionContext, object> provider, bool singleInstance)
        {
            RegistrationFlags flags = RegistrationFlags.None;

            if (singleInstance)
            {
                flags |= RegistrationFlags.SingleInstance;
            }

            var regKey       = new RegistrationKey(type, key);
            var registration = new Registration(type, key, provider, flags);

            _lock.EnterWriteLock();
            try
            {
                // note: replaces any existing bindings.
                _registrations[regKey] = registration;
            }
            finally
            {
                _lock.ExitWriteLock();
            }
        }