Exemplo n.º 1
0
        private async Task PerformStart()
        {
            _databaseBackuper = new DatabaseBackuper(DatabaseFilepath);
            SettingsManager.HandleSettingsUpgrade();
            while (true)
            {
                ContainerBuilder builder = null;
                using (new MeasureTimeWrapper(() => builder = AutofacConfiguration.ContainerBuilder(), "ContainerBuilder")) { }

                var init = await HandleApplicationInit(builder);

                try
                {
                    //it could be using, but then there is problem with resolving func factory... anyway it will die with app.
                    IContainer container = null;
                    using (new MeasureTimeWrapper(() => container = builder.Build(), "Container.Build")) { }

                    if (HandleInitDataGeneration(init, container))
                    {
                        return;
                    }

                    using (new MeasureTimeWrapper(() => container.Resolve <MainWindow>().Show(), "Resolve<MainWindow>.Show")) { }

                    await _updater.HandleApplicationUpdatesCheck();

                    break;
                }
                catch (LiteException exception)
                {
                    _logger.Value.Error("Loading app failed", exception);
                }
            }
        }
Exemplo n.º 2
0
        internal static IContainer GetContainer()
        {
            MapperConfiguration.Configure();
            var builder = AutofacConfiguration.ContainerBuilder();

            //override db register
            builder.Register(x => new LiteRepository(new LiteDatabase(new MemoryStream()))).SingleInstance().ExternallyOwned();

            builder.RegisterType <ApplicationViewModel>()
            .Named <ViewModelBase>(nameof(ApplicationViewModel))
            .As <ViewModelBase>()
            .As <ApplicationViewModel>()
            .SingleInstance();

            //search should be perform instantly in tests
            builder.Register(x =>
            {
                var vm = new SearchViewModel(
                    x.Resolve <IQueryDispatcher>(),
                    x.Resolve <ICommandDispatcher>(),
                    x.Resolve <ViewModelFactory>(),
                    x.Resolve <TransactionsProvider>())
                {
                    IsDebounceable = false
                };
                return(vm);
            })
            .As <SearchViewModel>()
            .Named <ViewModelBase>(nameof(SearchViewModel));

            return(builder.Build());
        }