コード例 #1
0
        private void Init(PluginsConfLoader pluginsConfLoader)
        {
            pluginsConfLoader.Loaded += (sender, args) =>
            {
                if (Container != null)
                {
                    Container.Dispose();
                }

                PluginsConf pluginsConf = args.PluginsConf;

                AggregateCatalog catalog = new AggregateCatalog();

                foreach (string plugins in pluginsConf.PluginsList)
                {
                    string   path     = Path.Combine(pluginsConf.PluginsDir, plugins);
                    Assembly assembly = Assembly.LoadFile(path);
                    catalog.Catalogs.Add(new AssemblyCatalog(assembly));
                }

                //Create the CompositionContainer with the parts in the catalog.
                Container = new CompositionContainer(catalog);

                //Fill the imports of this object
                Container.ComposeParts(GetComposedParts());
            };

            pluginsConfLoader.Load();
        }
コード例 #2
0
ファイル: ImporterBase.cs プロジェクト: mfozd/mef-extensions
        private void Init(PluginsConfLoader pluginsConfLoader)
        {
            pluginsConfLoader.Loaded += (sender, args) =>
            {
                if (Container != null)
                {
                    Container.Dispose();
                }

                PluginsConf pluginsConf = args.PluginsConf;

                AggregateCatalog catalog = new AggregateCatalog();

                foreach (string plugins in pluginsConf.PluginsList)
                {
                    string path = Path.Combine(pluginsConf.PluginsDir, plugins);
                    Assembly assembly = Assembly.LoadFile(path);
                    catalog.Catalogs.Add(new AssemblyCatalog(assembly));
                }

                //Create the CompositionContainer with the parts in the catalog.
                Container = new CompositionContainer(catalog);

                //Fill the imports of this object
                Container.ComposeParts(GetComposedParts());
            };

            pluginsConfLoader.Load();
        }
コード例 #3
0
        public void LoadPlugins_With_Valid_Data()
        {
            PluginsConfLoader pluginsConfLoader = new PluginsConfLoader(_filePath);

            pluginsConfLoader.Loaded += (sender, args) =>
            {
                Assert.AreEqual(args.PluginsConf.PluginsDir, ".");
                Assert.IsNotNull(args.PluginsConf.PluginsList);
                Assert.AreEqual(args.PluginsConf.PluginsList.Count, 2);
                Assert.AreEqual(args.PluginsConf.PluginsList[0], "a.dll");
                Assert.AreEqual(args.PluginsConf.PluginsList[1], "b.dll");
            };

            pluginsConfLoader.Load();

        }