/// <summary> /// 获得公用的filter /// </summary> /// <returns></returns> private List <IFilter> GetGlobalFilters() { List <ConfigSetting> assmList = new List <ConfigSetting>(); if (_config != null && _config.SOAConfig != null && _config.SOAConfig.FilterConfigSection != null && _config.SOAConfig.FilterConfigSection.Configs != null) { foreach (var value in _config.SOAConfig.FilterConfigSection.Configs) { Assembly ass = null; if (value.Type.ToLower().EndsWith(".dll")) { string fullPath = GetAssmStaticPath(value.Type); ass = Assembly.LoadFile(fullPath); } else { ass = Assembly.Load(value.Type); } if (ass == null) { continue; } ConfigSetting setting = new ConfigSetting { Assembly = ass, FilterConfig = new Dictionary <string, object>(), }; setting.FilterConfig["GlobalUse"] = value.GlobalUse; if (!assmList.Contains(setting)) { assmList.Add(setting); } } } List <IFilter> list = new List <IFilter>(); foreach (var ass in assmList) { IAnalyzer analyzer = new ServiceAnalyzer(ass.Assembly); var filterList = analyzer.AnalyzeFilter(); if (filterList != null && filterList.Count > 0) { list.AddRange(filterList); } } return(list); }
public void FillPoolWithSingleAssembly(Assembly assmbly, List <IFilter> filterList) { #region 判断监视缓存 FileInfo assFile = new FileInfo(assmbly.Location); if (_AssWatcher.ContainsKey(assmbly.FullName)) { if (assFile.LastWriteTime <= _AssWatcher[assmbly.FullName]) { return; } else { _AssWatcher[assmbly.FullName] = assFile.LastWriteTime; } } else { _AssWatcher[assmbly.FullName] = assFile.LastWriteTime; } #endregion IAnalyzer analyzer = new ServiceAnalyzer(assmbly); analyzer.AnalyzeService(_pool, filterList); }