/// <summary> /// 获取依赖项清单 /// </summary> /// <typeparam name="TRequired">被依赖的对象类型</typeparam> /// <param name="requiredComponentType">被依赖组件类型</param> /// <param name="requiredId">被依赖对象ID</param> /// <returns></returns> public virtual List <DependentDescriptor> GetDependents <TRequired>(int requiredComponentType, Guid requiredId) { List <DependentDescriptor> result = new List <DependentDescriptor>(); try { var finders = _serviceResolver.GetAll <IDependentLookup <TRequired> >(); var dependents = _dependencyService.Query(n => n.Where(f => (int)f.RequiredComponentType == requiredComponentType && f.RequiredObjectId == requiredId)); foreach (var item in dependents) { var finder = finders.FirstOrDefault(x => x.ComponentType == item.DependentComponentType); if (finder != null) { var dependentDescriptor = finder.GetDependent(item.DependentObjectId); if (dependentDescriptor != null) { dependentDescriptor.ComponentType = item.DependentComponentType; dependentDescriptor.DependentId = item.DependentObjectId; result.Add(dependentDescriptor); } } } } catch (Exception exception) { try { _logService.Error(exception); } catch { } } return(result); }
/// <summary> /// 发布事件 /// </summary> /// <typeparam name="TEvent">事件类</typeparam> /// <param name="e">事件对象</param> public virtual void Publish <TEvent>(TEvent e) { //获取所有事件接收者 var consumers = _serviceResolver.GetAll <IConsumer <TEvent> >().ToList(); foreach (var consumer in consumers) { try { //处理事件 consumer.HandleEvent(e); } catch (Exception exception) { _logService.Error(exception); } } }