我想实现一些CommandBus可以做到的.DispatchCommandsCommandHandlers
Command是一个简单的DTO,描述了应该发生的事情.例如:"增量计数器减5"CommandHandler能够处理精确类型Command.CommandBus采取Command和执行CommandHandler即能处理它.我写的代码不编译.
编译器抱怨cannot convert from 'IncrementHandler' to 'Handler<Command>'.我不明白为什么,因为IncrementHandler实现Handler<Increment>和Increment实现Command
我已经尝试了通用接口上的两个in和out修饰符,它没有解决问题.
有没有办法只用接口来实现这个目标?
[TestClass]
public class CommandBusTest
{
[TestMethod]
public void DispatchesProperly()
{
var handler = new IncrementHandler(counter: 0);
var bus = new CommandBus(handler); // <--Doesn't compile: cannot convert from 'IncrementHandler' to 'Handler<Command>'
bus.Dispatch(new Increment(5));
Assert.AreEqual(5, handler.Counter);
}
}
public …Run Code Online (Sandbox Code Playgroud)