过去此处演示 CQRS 代码 https://gist.github.com/hyrmn/3200053/raw/39ae14e4226d5e0d032690bf0e37e75286d2a1f7/EndToEndTests.cs命令和事件处理程序分别连接如下:
public interface CommandHandler<in T>
{
void Handle(T command);
}
public interface EventHandler<in T>
{
void Handle(T @event);
}
bus = BusSetup.StartWith<Conservative>()
.Apply<FlexibleSubscribeAdapter>(a =>
{
a.ByInterface(typeof(IHandleEvent<>));
a.ByInterface(typeof(IHandleCommand<>));
})
.Construct();
我正在使用一个与 membus 连接的 IoC 容器,它通过实现以下功能实现了梦想IEnumerable<object> GetAllInstances(Type desiredType)
与我的容器的接口,但是与使用这种注册方法的演示不同,我无法为单独的命令和事件拆分接口:
this.Bus = BusSetup.StartWith<Conservative>()
.Apply <IoCSupport>(c =>
{
c
.SetAdapter(SimpleInjectorWiring.Instance)
.SetHandlerInterface(typeof(CommandHandler<>))
/*.SetHandlerInterface(typeof(EventHandler<>))*/;
// only CommandHandler or EventHandler can be used - not both
})
.Construct();
谁能告诉我是否有任何解决办法,以便我们可以注册任意数量的类型?
恐怕当前版本的 MemBus 无法做到这一点 - 请注意,没有特殊原因。我知道区分事件和命令是有意义的,即使底层基础设施是相同的。
目前唯一的解决方法是使用单个接口将 IOC 连接到 MemBus。
如果应该将这样的功能引入 MemBus,则必须考虑 IOC 容器的查找机制应该是什么样子。它可能必须请求所有接口的所有处理程序,或者必须引入某种对事件和命令“消息”进行分类/区分的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)