public void Build() { _internalStartup.AddServices(_serviceContainer); if (_startupInstance != null) { // Startup is already built _serviceContainer.AddTransient(factory => _startupInstance); appStartup = _startupInstance; } else { _serviceContainer.AddTransient <TStartup>(); var temporaryFactory = GetFactory(); appStartup = temporaryFactory.Get <TStartup>(); } appStartup.AddServices(_serviceContainer); }