internal static Collection <T> GetExportedPlugins <T>(string directory) { MultiDirectoryCatalog catalog = new MultiDirectoryCatalog(new string[] { directory }, searchPattern); CompositionContainer container = new CompositionContainer(catalog); try { var plugins = GetExportedPlugins(typeof(T), container); return(new Collection <T>(plugins.Cast <T>().ToList())); } catch (Exception ex) { GisEditor.LoggerManager.Log(LoggerLevel.Debug, ex.Message, new ExceptionInfo(ex)); return(new Collection <T>()); } finally { if (catalog != null) { catalog.Dispose(); } if (container != null) { container.Dispose(); } } }
internal static Collection <T> GetDefaultPlugins <T>() { string directory = Path.Combine(FolderHelper.GetEntryPath(), "Plugins"); if (defaultCatalog == null) { defaultCatalog = new MultiDirectoryCatalog(new string[] { directory }, searchPattern); defaultContainer = new CompositionContainer(defaultCatalog); } return(new Collection <T>(GetExportedPlugins(typeof(T), defaultContainer).Cast <T>().ToList())); }