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