예제 #1
0
        public void Bootstrap()
        {
            MainViewModel           vm                = new MainViewModel();
            List <DirectoryCatalog> directories       = new List <DirectoryCatalog>();
            NameValueCollection     configDirectories = ConfigurationManager.GetSection("pluginDirectory") as NameValueCollection;

            try
            {
                foreach (var key in configDirectories.AllKeys)
                {
                    directories.Add(new DirectoryCatalog(configDirectories[key]));
                }
            }
            catch (DirectoryNotFoundException e)
            {
                Console.WriteLine(e.Message + "\nPress any key to exit.");
                Console.ReadKey();
                Environment.Exit(2);
            }

            directories.Add(new DirectoryCatalog(@"."));

            AggregateCatalog catalog = new AggregateCatalog(directories);

            catalog.Catalogs.Add(new AssemblyCatalog(typeof(PathProvider).Assembly));

            CompositionContainer container = new CompositionContainer(catalog);
            List <string>        missingModules;

            try
            {
                container.ComposeParts(vm);
                missingModules = CompositionCheck.GetMissingModules(directories).ToList();
                if (missingModules.Any())
                {
                    throw new CompositionException();
                }
                mainVM = vm;
            }
            catch (CompositionException compositionException)
            {
                missingModules = CompositionCheck.GetMissingModules(directories).ToList();
                if (missingModules.Any())
                {
                    foreach (var missingModule in missingModules)
                    {
                        Console.WriteLine(missingModule + " plugin missing!");
                    }
                }
                else
                {
                    Console.WriteLine("Only one plugin of each type is allowed.");
                }
                Console.WriteLine("Press any key to exit.");
                Console.ReadKey();
                Environment.Exit(1);
            }
        }
예제 #2
0
        private void Bootstrap()
        {
            MainViewModel           vm                = new MainViewModel();
            List <DirectoryCatalog> directories       = new List <DirectoryCatalog>();
            NameValueCollection     configDirectories = ConfigurationManager.GetSection("pluginDirectory") as NameValueCollection;

            try
            {
                foreach (var key in configDirectories.AllKeys)
                {
                    directories.Add(new DirectoryCatalog(configDirectories[key]));
                }
            }
            catch (DirectoryNotFoundException e)
            {
                MessageBox.Show(e.Message);
                System.Windows.Application.Current.Shutdown();
            }

            directories.Add(new DirectoryCatalog(@"."));

            AggregateCatalog catalog = new AggregateCatalog(directories);

            catalog.Catalogs.Add(new AssemblyCatalog(typeof(WPFPathProvider).Assembly));

            CompositionContainer container = new CompositionContainer(catalog);
            List <string>        missingModules;

            try
            {
                container.ComposeParts(vm);
                missingModules = CompositionCheck.GetMissingModules(directories).ToList();
                if (missingModules.Any())
                {
                    throw new CompositionException();
                }
                MainWindow window = new MainWindow();
                MainWindow.DataContext = vm;
                window.Show();
            }
            catch (CompositionException compositionException)
            {
                missingModules = CompositionCheck.GetMissingModules(directories).ToList();
                if (missingModules.Any())
                {
                    foreach (var missingModule in missingModules)
                    {
                        MessageBox.Show(missingModule + " plugin missing!");
                    }
                }
                else
                {
                    MessageBox.Show("Only one plugin of each type is allowed.");
                }

                Environment.Exit(-1);
            }
        }