IEventData{TData_T}.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. namespace EventBus
  2. {
  3. /// <summary>
  4. /// 事件句柄
  5. /// </summary>
  6. /// <typeparam name="TData">事件发布数据类型</typeparam>
  7. /// <typeparam name="T">事件返回数据类型</typeparam>
  8. public interface IEventData<TData, T> : IBaseEventData
  9. {
  10. /// <summary>
  11. /// 发布同步事件
  12. /// <para>
  13. /// 当存在多个订阅时,只返回第一个订阅结果
  14. /// </para></summary>
  15. /// <param name="sender">事件源</param>
  16. /// <param name="data">事件数据</param>
  17. /// <param name="properties">筛选器</param>
  18. /// <returns></returns>
  19. T Publish(object sender, TData data, Properties? properties = null);
  20. /// <summary>
  21. /// 发布异步事件
  22. /// </summary>
  23. Task<T> PublishAsync(object sender, TData data, Properties? properties = null);
  24. List<T> PublishList(object sender, TData data, Properties? properties = null);
  25. Task<List<T>> PublishListAsync(object sender, TData data, Properties? properties = null);
  26. /// <summary>
  27. /// 订阅事件
  28. /// </summary>
  29. /// <param name="func">事件处理函数</param>
  30. /// <param name="properties">筛选器</param>
  31. Guid Subscrip(Func<object, EventArgs<TData>, T> func, Properties? properties = null);
  32. /// <summary>
  33. /// 订阅事件
  34. /// </summary>
  35. /// <param name="func">事件处理函数</param>
  36. /// <param name="properties">筛选器</param>
  37. Guid SubscripList(Func<object, EventArgs<TData>, List<T>> func, Properties? properties = null);
  38. }
  39. }