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