private object InternalResolve(IInjectContext injectContext) { object instance; BoundObjects = BoundObjects ?? new List <object>(); switch (BindingType) { case BindingType.Singleton: if (BoundObjects.Count == 0) { instance = ResolveNew(injectContext); BoundObjects.Add(instance); Container.Injector.Inject(instance, injectContext); Resolved?.Invoke(true, this, null); } else { instance = BoundObjects.FirstOrDefault(); Resolved?.Invoke(false, this, null); } break; case BindingType.Transient: instance = ResolveNew(injectContext); Container.Injector.Inject(instance, injectContext); Resolved?.Invoke(true, this, null); break; default: throw new InvalidOperationException(); } return(instance); }