Files
2026-10-27 14:35:03 +08:00

1.7 KiB
Raw Permalink Blame History

源码来源与修改记录

来源:用户提供的 D:\Sources\MediatR-14.2.0。 上游项目:https://github.com/LuckyPennySoftware/MediatR

LICENSE.md 为原目录同名文件的原样副本,声明 RPL 1.5 或商业许可。移除依赖不改变原许可要求。

直接抽取

  • src/MediatR.Contracts/INotification.cs
  • src/MediatR/INotificationHandler.cs(含同步 NotificationHandler 基类)
  • src/MediatR/IPublisher.cs
  • src/MediatR/INotificationPublisher.cs
  • src/MediatR/NotificationHandlerExecutor.cs
  • src/MediatR/NotificationPublishers/ForeachAwaitPublisher.cs
  • src/MediatR/NotificationPublishers/TaskWhenAllPublisher.cs
  • src/MediatR/Wrappers/NotificationHandlerWrapper.cs

以上代码注释已翻译为中文,许可声明保留原文;命名空间由 MediatR 改为 MAX.Notification,并添加来源说明。Wrapper 移除 Microsoft.Extensions.DependencyInjection,GetServices() 改为标准 IServiceProvider.GetService(typeof(IEnumerable)),空结果使用空集合,错误返回类型抛出转换异常。保留原处理器类型去重逻辑。

NotificationPublisher.cs 从 src/MediatR/Mediator.cs 抽取两个 Publish 重载、PublishCore、PublishNotification、通知缓存及相关字段。入口类改名,保留默认和自定义发布策略构造方式,增加构造参数 null 校验。去除请求响应、流以及第三方许可证检测调用,保留许可声明。

项目配置、使用说明和测试为新增内容。库不依赖第三方 NuGet 包,也排除全局 PolySharp 引用。

保留原版行为:只传递 CancellationToken,不主动检查取消;TaskWhenAllPublisher 枚举期间遇到同步异常时停止启动后续处理器。