public void InitializeForStartup(Action <IContainer> registrationAction) { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("en"); updateGoDiagramKey(); var container = new CastleWindsorContainer(); IoC.InitializeWith(container); IoC.RegisterImplementationOf <IContainer>(container); initFacilities(container); container.RegisterImplementationOf(getCurrentContext()); container.AddRegister(x => x.FromType <PresenterRegister>()); container.AddRegister(x => x.FromType <UIRegister>()); // Global Singleton Objects container.Register <IExceptionManager, ExceptionManager>(LifeStyle.Singleton); container.RegisterImplementationOf(this); container.Register <IEventPublisher, EventPublisher>(LifeStyle.Singleton); container.Register <IFileLocker, FileLocker>(LifeStyle.Singleton); container.Register <ILogger, MoBiLogger>(LifeStyle.Singleton); container.Register <ISplashScreen, SplashScreen>(); container.Register <ISplashScreenPresenter, SplashScreenPresenter>(); container.Register <IProgressUpdater, ProgressUpdater>(); container.RegisterFactory <IProgressManager>(); container.Register <IMoBiConfiguration, IApplicationConfiguration, MoBiConfiguration>(LifeStyle.Singleton); registerRunOptionsIn(container); EnvironmentHelper.ApplicationName = () => "mobi"; registrationAction?.Invoke(container); }