似乎我不能多次定义命令/事件约定。每个注册的约定都将覆盖以前的约定。
这有效:
configuration.Conventions()
.DefiningCommandsAs(
type => type.FullName == "MyProject1.CommandA" || type.FullName == "MyProject2.CommandB");
但这不会:
configuration.Conventions()
.DefiningCommandsAs(
type => type.FullName == "MyProject1.CommandA");
configuration.Conventions()
.DefiningCommandsAs(
type => type.FullName == "MyProject2.CommandB");
为什么我需要这个:
我正在开发一个曾经在 NSB 项目中引用的包,它将执行定期操作(发送消息)。它需要定义自己的命令约定,INeedInitialization
在程序集扫描期间将采用这些约定。我不希望包的用户知道他需要注册包的约定。但是宿主项目需要为命令注册自己的约定。因此,目前看来我要么需要求助于标记接口(我不想这样做,引入不显眼模式是有充分理由的),要么提出所有命令必须驻留在 *.Commands 中的约定。 * 我也不喜欢的命名空间。
所以问题是如何让包注册它自己的约定对主机不显眼和透明。
编辑
我可以想到解决此问题的另一种方法是实现共享约定单例并将约定的注册委托给它。然后,该单例将记住所有约定,并且每次都会继续附加它们。不漂亮,但不比其他 2 个选项丑。