gro*_*kky 6 c# cqrs mediatr asp.net-core
我的命令:
public class Command : IRequest { ... }
Run Code Online (Sandbox Code Playgroud)
我的处理程序:
public class CommandHandler : IAsyncRequestHandler<Command> { ... }
Run Code Online (Sandbox Code Playgroud)
我的管道注册(不使用开放的泛型):
services.AddTransient<IPipelineBehavior<Command>, MyBehavior<Command>>();
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用:Using the generic type 'IPipelineBehavior<TRequest, TResponse>' requires 2 type arguments.并且存在相同的错误MyBehavior。
文档提到了Unitstruct。如何使用?
正如MickaëlDerriey指出的那样,MediatR已经定义了IRequest,IRequestHandler和IAsyncRequestHandler,以在不需要时不返回值。
如果您查看IRequest,则可以看到它实际上是从继承的IRequest<Unit>,这意味着当您进行处理时Command,默认情况下,管道行为MyBehavior将Unit结构返回为响应,而无需为IRequest指定显式响应Command。
举个例子:
public class Command : IRequest { ... }
public class CommandHandler : IAsyncRequestHandler<Command> { ... }
services.AddTransient<IPipelineBehavior<Command,Unit>, MyBehavior<Command,Unit>>();
Run Code Online (Sandbox Code Playgroud)