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; } }
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(); } }