예제 #1
0
        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);
        }