实例介绍
MediatR提供了一种简洁的方式来实现.NET中的中介者模式,它允许进行进程内消息传递而无需任何外部依赖。该库支持多种类型的消息处理,包括请求/响应、命令、查询、通知和事件,既可以同步也可以异步执行,通过C#泛型变异实现智能分发。
要安装MediatR,您可以通过NuGet或.NET Core命令行接口进行安装。安装后,您可以只引用MediatR的契约包,这对于将MediatR契约与处理程序分离到不同的程序集/项目中的场景非常有用,例如API契约、GRPC契约或Blazor。
此外,MediatR直接支持Microsoft.Extensions.DependencyInjection.Abstractions,可以轻松地将各种MediatR服务和处理程序注册到IServiceCollection中。这包括将IMediator、ISender、IPublisher及其具体实现类注册为瞬态服务,并支持注册行为、流行为、预处理器和后处理器等。
通过这种方式,MediatR使得在.NET应用程序中实现中介者模式变得简单快捷,有助于降低组件间的耦合度,提高代码的可维护性和可扩展性。
【实例截图】
【核心代码】
文件清单
└── MediatR-88c4d73ce514a64a9083aeb8df2e2c3692049b7d
├── Build.ps1
├── BuildContracts.ps1
├── Directory.Build.props
├── LICENSE
├── MediatR.sln
├── MediatR.snk
├── NuGet.Config
├── Push.ps1
├── README.md
├── assets
│ └── logo
│ ├── flat_128x128.png
│ ├── flat_32x32.png
│ ├── flat_64x64.png
│ ├── gradient_128x128.png
│ ├── gradient_32x32.png
│ └── gradient_64x64.png
├── samples
│ ├── MediatR.Examples
│ │ ├── ConstrainedRequestPostProcessor.cs
│ │ ├── ExceptionHandler
│ │ │ ├── Exceptions.cs
│ │ │ ├── ExceptionsHandlers.cs
│ │ │ ├── ExceptionsHandlersOverrides.cs
│ │ │ ├── Handlers.cs
│ │ │ ├── LogExceptionAction.cs
│ │ │ ├── Requests.cs
│ │ │ └── RequestsOverrides.cs
│ │ ├── GenericHandler.cs
│ │ ├── GenericPipelineBehavior.cs
│ │ ├── GenericRequestPostProcessor.cs
│ │ ├── GenericRequestPreProcessor.cs
│ │ ├── Jing.cs
│ │ ├── JingHandler.cs
│ │ ├── MediatR.Examples.csproj
│ │ ├── Ping.cs
│ │ ├── PingHandler.cs
│ │ ├── Pinged.cs
│ │ ├── PingedHandler.cs
│ │ ├── Pong.cs
│ │ ├── Ponged.cs
│ │ ├── Runner.cs
│ │ └── Streams
│ │ ├── GenericStreamPipelineBehavior.cs
│ │ ├── Sing.cs
│ │ ├── SingHandler.cs
│ │ └── Song.cs
│ ├── MediatR.Examples.AspNetCore
│ │ ├── MediatR.Examples.AspNetCore.csproj
│ │ └── Program.cs
│ ├── MediatR.Examples.Autofac
│ │ ├── MediatR.Examples.Autofac.csproj
│ │ └── Program.cs
│ ├── MediatR.Examples.DryIoc
│ │ ├── MediatR.Examples.DryIoc.csproj
│ │ └── Program.cs
│ ├── MediatR.Examples.Lamar
│ │ ├── MediatR.Examples.Lamar.csproj
│ │ └── Program.cs
│ ├── MediatR.Examples.LightInject
│ │ ├── MediatR.Examples.LightInject.csproj
│ │ └── Program.cs
│ ├── MediatR.Examples.PublishStrategies
│ │ ├── AsyncPingedHandler.cs
│ │ ├── CustomMediator.cs
│ │ ├── MediatR.Examples.PublishStrategies.csproj
│ │ ├── Program.cs
│ │ ├── PublishStrategy.cs
│ │ ├── Publisher.cs
│ │ └── SyncPingedHandler.cs
│ ├── MediatR.Examples.SimpleInjector
│ │ ├── MediatR.Examples.SimpleInjector.csproj
│ │ └── Program.cs
│ ├── MediatR.Examples.Stashbox
│ │ ├── MediatR.Examples.Stashbox.csproj
│ │ └── Program.cs
│ └── MediatR.Examples.Windsor
│ ├── ContravariantFilter.cs
│ ├── MediatR.Examples.Windsor.csproj
│ └── Program.cs
├── src
│ ├── MediatR
│ │ ├── IMediator.cs
│ │ ├── INotificationHandler.cs
│ │ ├── INotificationPublisher.cs
│ │ ├── IPipelineBehavior.cs
│ │ ├── IPublisher.cs
│ │ ├── IRequestHandler.cs
│ │ ├── ISender.cs
│ │ ├── IStreamPipelineBehavior.cs
│ │ ├── IStreamRequestHandler.cs
│ │ ├── Internal
│ │ │ ├── HandlersOrderer.cs
│ │ │ └── ObjectDetails.cs
│ │ ├── MediatR.csproj
│ │ ├── Mediator.cs
│ │ ├── MicrosoftExtensionsDI
│ │ │ ├── MediatrServiceConfiguration.cs
│ │ │ ├── RequestExceptionActionProcessorStrategy.cs
│ │ │ └── ServiceCollectionExtensions.cs
│ │ ├── NotificationHandlerExecutor.cs
│ │ ├── NotificationPublishers
│ │ │ ├── ForeachAwaitPublisher.cs
│ │ │ └── TaskWhenAllPublisher.cs
│ │ ├── Pipeline
│ │ │ ├── IRequestExceptionAction.cs
│ │ │ ├── IRequestExceptionHandler.cs
│ │ │ ├── IRequestPostProcessor.cs
│ │ │ ├── IRequestPreProcessor.cs
│ │ │ ├── RequestExceptionActionProcessorBehavior.cs
│ │ │ ├── RequestExceptionHandlerState.cs
│ │ │ ├── RequestExceptionProcessorBehavior.cs
│ │ │ ├── RequestPostProcessorBehavior.cs
│ │ │ └── RequestPreProcessorBehavior.cs
│ │ ├── Registration
│ │ │ └── ServiceRegistrar.cs
│ │ ├── TypeForwardings.cs
│ │ └── Wrappers
│ │ ├── NotificationHandlerWrapper.cs
│ │ ├── RequestHandlerWrapper.cs
│ │ └── StreamRequestHandlerWrapper.cs
│ └── MediatR.Contracts
│ ├── INotification.cs
│ ├── IRequest.cs
│ ├── IStreamRequest.cs
│ ├── MediatR.Contracts.csproj
│ └── Unit.cs
└── test
├── MediatR.Benchmarks
│ ├── Benchmarks.cs
│ ├── DotTraceDiagnoser.cs
│ ├── GenericPipelineBehavior.cs
│ ├── GenericRequestPostProcessor.cs
│ ├── GenericRequestPreProcessor.cs
│ ├── MediatR.Benchmarks.csproj
│ ├── Ping.cs
│ ├── Pinged.cs
│ └── Program.cs
└── MediatR.Tests
├── CreateStreamTests.cs
├── ExceptionTests.cs
├── GenericTypeConstraintsTests.cs
├── MediatR.Tests.csproj
├── MicrosoftExtensionsDI
│ ├── AssemblyResolutionTests.cs
│ ├── CustomMediatorTests.cs
│ ├── DerivingRequestsTests.cs
│ ├── DuplicateAssemblyResolutionTests.cs
│ ├── Handlers.cs
│ ├── NotificationPublisherTests.cs
│ ├── PipeLineMultiCallToConstructorTest.cs
│ ├── PipelineTests.cs
│ ├── StreamPipelineTests.cs
│ ├── TypeEvaluatorTests.cs
│ └── TypeResolutionTests.cs
├── NotificationHandlerTests.cs
├── NotificationPublisherTests.cs
├── Pipeline
│ ├── RequestExceptionActionTests.cs
│ ├── RequestExceptionHandlerTests.cs
│ ├── RequestPostProcessorTests.cs
│ ├── RequestPreProcessorTests.cs
│ └── Streams
│ └── StreamPipelineBehaviorTests.cs
├── PipelineTests.cs
├── PublishTests.cs
├── SendTests.cs
├── SendVoidInterfaceTests.cs
├── ServiceFactoryTests.cs
├── StreamPipelineTests.cs
└── UnitTests.cs
31 directories, 141 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论