예제 #1
0
        private ReadOnlyCollection <IPlugin> Collect()
        {
            var plugins = new List <IPlugin>();

            using (var container = new PluginCompositionContainer <MetadataCompilerPluginBootstrapper>())
            {
                var bootstrapper = container.Compose();

                plugins.AddRange(bootstrapper.MetadataCompilers);
            }

            /*
            **  Collect new plugins here
            **
            ** using (var container = new PluginCompositionContainer<XYZPluginBootstrapper>())
            ** {
            **  var bootstrapper = container.Compose();
            **
            **  plugins.AddRange(bootstrapper.XYZs);
            ** }
            */

            var duplicatedPlugins = plugins.GroupBy((p) => p.Name)
                                    .Where((g) => g.Count() > 1)
                                    .Select((g) => g.Key)
                                    .ToArray();

            if (duplicatedPlugins.Length > 0)
            {
                throw new ApplicationException(string.Format("Duplicated plugin names found [{0}]", string.Join(";", duplicatedPlugins)));
            }

            return(plugins.AsReadOnly());
        }
예제 #2
0
        private ReadOnlyCollection<IPlugin> Collect()
        {
            var plugins = new List<IPlugin>();

            using (var container = new PluginCompositionContainer<MetadataCompilerPluginBootstrapper>())
            {
                var bootstrapper = container.Compose();

                plugins.AddRange(bootstrapper.MetadataCompilers);
            }

            var duplicatedPlugins = plugins.GroupBy((p) => p.Name)
                .Where((g) => g.Count() > 1)
                .Select((g) => g.Key)
                .ToArray();
            if (duplicatedPlugins.Length > 0)
                throw new ApplicationException(string.Format("Duplicated plugin names found [{0}]", string.Join(";", duplicatedPlugins)));

            return plugins.AsReadOnly();
        }