gpt4 book ai didi

c# - 以 Unity 作为 IoC 的 Rebus Servicebus

转载 作者:行者123 更新时间:2023-12-02 01:15:01 25 4
gpt4 key购买 nike

我有几个 Rebus 新手入门问题。 Rebus ReadMe file 中的所有精美 sample 使用温莎城堡,但我没有那个选项;相反,我必须使用 Unity。

我的第一个挑战是为 Unity IoC 容器找到合适的适配器,如示例所述:

var someContainerAdapter =
new AdapterForMyFavoriteIocContainer(myFavoriteIocContainer);

我终于找到了一些代码 here这似乎可以完成这项工作,但也许存在更好的容器,因为我必须自己实现 IContainerAdapter 接口(interface)(我想知道是否需要...)。

但我可以接受...

我的下一个问题更严重,我还没有发现。在 Rebus 入门示例中,以下内容用于向 IoC 容器添加处理程序:

container.Register(
Component.For<IHandleMessages<DateTime>>()
.ImplementedBy<PrintDateTime>());

以上是温莎城堡语法,我不知道 Unity 语法应该如何处理相同的操作。所以我需要一些帮助。一个建议是,如果我可以获得一个适用于 Unity 的小型解决方案的引用。

最佳答案

我的建议是使用Rebus.Unity ,这是一个现成的 Rebus Unity 容器适配器,由一位出色的 Rebus 贡献者制作。

它有一个 NuGet 包,因此您只需install-package Rebus.Unity(或者您喜欢的任何一种方式将 NuGet 包添加到您的项目)。

现在,为了向 Unity 注册处理程序,您应该意识到 Unity ResolveAll 行为方面的行为不同于所有其他容器(在至少我知道的那些),这要求您的所有处理程序都注册为命名注册。

我不记得执行此操作的确切 Unity 语法,但我认为它看起来有点像这样:

container.RegisterType<IHandleMessages<SomeMessage>, MyMessageHandler>("id");

为了将 MyMessageHandler 注册为 SomeMessage 的处理程序。各种注册功能还有其他几个重载,因此您应该能够找到满足您需要的一个 - 但请记住 使用 Unity,因为 Rebus 执行 ResolveAll,您必须始终使用 key /ID 注册处理程序

关于c# - 以 Unity 作为 IoC 的 Rebus Servicebus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12636325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com