コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
        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()));
        }