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); } } }
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()); }