问题标签 [membus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
939 浏览

c# - Membus 和 Simple Injector - 通过接口自动连接命令处理程序

我在 Membus 中看到了 IoC 功能,我尝试将其连接到 Simple Injector

这个想法是我将自动注册我的所有类型RegisterManyForOpenGeneric(typeof<CommandHandler<>),typeof<CommandHandler<>).Assembly)

毫无疑问,通常有充分的理由,SimpleInjector 不允许多次注册 - 但是,我想这样做是为了让不同的处理程序实现命令处理的不同方面/问题。

当然,IEnumerable<object> IocAdapter.GetAllInstances(Type desiredType)来自 membus 的接口需要一个集合,因此可以调用多个处理程序。

将 Membus 与 SimpleInjector IoC 结合的最佳方式是什么?

脚注

我已经看到了按照惯例连接menbus的其他方法:

但我真的很想坚持使用 IoC 容器来处理生命周期范围,并避免实例化命令处理程序并在需要它们之前手动连接它们。

0 投票
2 回答
306 浏览

cqrs - 带有 membus 和 ioc 容器的 SetHandlerInterface() 的多种类型

这里查看演示 CQRS 代码,命令和事件处理程序分别连接如下:

我正在使用一个与 membus 挂钩的 IoC 容器,它通过IEnumerable<object> GetAllInstances(Type desiredType)使用我的容器实现接口来实现梦想,但是与使用这种注册方法的演示不同,我无法将接口拆分为单独的命令和事件:

任何人都可以让我知道是否有任何方法可以解决这个问题,以便我们可以注册任意数量的类型?

0 投票
4 回答
2258 浏览

c# - 生命周期范围由 IoC 容器处理的单元测试对象

我正在使用 Microsoft 单元测试并具有以下内容:

我正在使用一个处理对象生命周期范围的 IoC 容器(简单注入器)。Membus 将命令连接到命令处理程序,并通过 IoC 容器进行解析。

上面的代码运行和工作,命令处理程序将它们的局部变量设置为 true。

但是,由于 Simple Injector 处理生命周期范围,我不能向 Simple Injector 询问AccountCommandHandler对象,因为它会返回一个CreateAccountCommandWasCalled设置为 false 的新对象。

CreateAccountCommandWasCalled作为单元测试的新手,除了设置为静态变量之外,还有什么更健壮的测试方法?