public void Setup()
 {
     kernel = new StandardKernel();
     kernel.Components.Remove <IMissingBindingResolver, SelfBindingResolver>();
     manager = new ConventionBindingManager(kernel, new[]
     {
         typeof(Areas.TestArea1.Anchor).Assembly,
         typeof(Areas.TestArea1.Contracts.Anchor).Assembly
     });
     manager.BindAssembliesByConvention();
 }
Пример #2
0
        protected override void OnStartup(object sender, StartupEventArgs e)
        {
            base.OnStartup(sender, e);

            HandleExceptions(() =>
            {
                kernel.Bind <IWindowManager>().To <WindowManager>().InSingletonScope();

                var kernelConfig = KernelConfig.EnableFor(kernel);
                kernel.Bind <IKernelConfig>().ToConstant(kernelConfig);

                IMessageBus messageBus = new MessageBus();
                kernel.Bind <IMessageBus>().ToConstant(messageBus);

                kernelConfig.AddPostInitializeActivations(
                    (context, reference) =>
                {
                    if (reference.Instance is IHandle)
                    {
                        messageBus.Subscribe(reference.Instance);
                    }
                },
                    (context, reference) =>
                {
                    if (reference.Instance is IHandle)
                    {
                        messageBus.Unsubscribe(reference.Instance);
                    }
                });

                var conventionBindingManager = new ConventionBindingManager(
                    kernel,
                    new[] { this.GetType().Assembly }.Concat(pluginManager.PluginAssemblies).ToArray());
                conventionBindingManager.BindAssembliesByConvention();

                var persistentDataManager = kernel.Get <PersistenceEnabler>();
                persistentDataManager.SetupPersistenceActivation();

                var logger = GetLogger();

                var backupManager = kernel.Get <BackupManager>();
                var userSettings  = kernel.Get <DataBackupUserSettings>();

                if (userSettings.CreateNewBackupRequested)
                {
                    backupManager.CreateDataBackup();
                    userSettings.CreateNewBackupRequested = false;
                    userSettings.Save();
                }

                if (TryRestoreDataBackupIfRequested(backupManager, userSettings, logger))
                {
                    // For the persistence systems to properly initialize, restart is required.
                    RestartCurrentApp();
                    return;
                }

                backupManager.CreateTodaysDataBackupIfNotExists();
                backupManager.TrimOldDataBackups(userSettings.BackupRetentionTreshhold);
                backupManager.LockRestoreDataBackupForThisSession();

                var appMigrationsManager = kernel.Get <IAppMigrationsManager>();
                appMigrationsManager.RunMigrations();

                var featureManager = kernel.Get <IFeaturesManager>();
                featureManager.InitFeaturesAsync();

                DisplayRootViewFor <MainViewModel>();

                var appManager = kernel.Get <AppRuntimeManager>();
                appManager.ExecuteAfterStartupSteps();

                foreach (var dllLoadError in pluginManager.DllLoadErrors)
                {
                    logger.Error(dllLoadError.Exception, "Failed to load plugin DLL: " + dllLoadError.DllFileName);
                }

                System.Windows.Forms.Application.ThreadException += ApplicationOnThreadException;
            });
        }