Example #1
0
        /// <summary>
        /// 从一个或多个DLL文件中读取插件
        /// </summary>
        /// <param name="strPluginFolderArry">DLL文件数组</param>
        /// <param name="strFilterObjectNameArray">踢出对象名称列表</param>
        /// <returns>插件目录字典</returns>
        public PluginCategoryDictionary GetPluginsFromDLLFiles(string[] strFilePathArray, string[] strFilterObjectNameArray, bool bFilterObjectNameArrayTypeRemove)
        {
            PluginCategoryDictionary pluginCategoryDictionary = new PluginCategoryDictionary();

            //
            foreach (string one in strFilePathArray)
            {
                pluginCategoryDictionary.Add(this.GetPluginsFromDll(one, strFilterObjectNameArray, bFilterObjectNameArrayTypeRemove));
            }
            //
            return(pluginCategoryDictionary);
        }
Example #2
0
        /// <summary>
        /// 从一个或多个文件夹中读取插件
        /// </summary>
        /// <param name="strPluginFolderArry">文件夹数组</param>
        /// <param name="strPluginFolderArry">排除的文件名列表(包含后缀名)</param>
        /// <param name="bFilterFilePathArrayTypeRemove">true 过滤;false 包含</param>
        /// <param name="strFilterObjectNameArray">踢出对象名称列表</param>
        /// <param name="bFilterObjectNameArrayTypeRemove">true 过滤;false 包含</param>
        /// <returns>插件目录字典</returns>
        public PluginCategoryDictionary GetPluginsFromDLLFolders(string[] strPluginFolderArray, string[] strFilterFilePathArray, bool bFilterFilePathArrayTypeRemove, string[] strFilterObjectNameArray, bool bFilterObjectNameArrayTypeRemove)
        {
            PluginCategoryDictionary pluginCategoryDictionary = new PluginCategoryDictionary();

            //
            foreach (string pluginFolder in strPluginFolderArray)
            {
                //检测插件文件夹是否存在,如果不存在则新建一个避免出现异常
                if (!Directory.Exists(pluginFolder))
                {
                    Directory.CreateDirectory(pluginFolder);
                    continue;
                }
                //获得插件文件夹中每一个dll文件
                string[] _files = Directory.GetFiles(pluginFolder, "*.dll");
                foreach (string one in _files)
                {
                    if (bFilterFilePathArrayTypeRemove)
                    {
                        if (this.Contains(strFilterFilePathArray, System.IO.Path.GetFileName(one)))
                        {
                            continue;
                        }
                        pluginCategoryDictionary.Add(this.GetPluginsFromDll(one, strFilterObjectNameArray, bFilterObjectNameArrayTypeRemove));
                    }
                    else
                    {
                        if (!this.Contains(strFilterFilePathArray, System.IO.Path.GetFileName(one)))
                        {
                            continue;
                        }
                        pluginCategoryDictionary.Add(this.GetPluginsFromDll(one, strFilterObjectNameArray, bFilterObjectNameArrayTypeRemove));
                    }
                }
            }

            return(pluginCategoryDictionary);
        }