我是 IoC 新手,所以我想知道它是否适合我想做的工作。

我正在编写一个 Multi-Tenancy 应用程序,有几个地方我们可能希望根据当前登录用户所属的组织使用不同的接口(interface)实现。

例如,当一个组织的用户创建工作订单时,需要向该用户的主管发送一封电子邮件。但对于所有其他组织,不需要发送该电子邮件。经典策略模式之类的东西。

我的问题是,我能否以某种方式指示 IoC 容器查看某个运行时值(在这种情况下为登录用户的 OrganizationId)以确定将 IWorkOrderProcessor 的哪个实现注入(inject)到需要它的对象的构造函数中?

我目前正在使用 Windsor,但使用其他容器的示例也可以。

最佳答案

Windsor 有一个非常适合 Multi-Tenancy 应用程序的扩展点:IHandlerSelector。

  • http://ayende.com/Blog/archive/2008/10/05/windsor-ihandlerselector.aspx
  • http://mikehadlow.blogspot.com/2008/11/multi-tenancy-part-2-components-and.html

  • 这使您可以像非 Multi-Tenancy 一样对应用程序进行编码。 Multi-Tenancy 逻辑已移出您的业务逻辑。

    关于.net - 我可以使用 IoC 容器来创建需要运行时值的依赖项吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2269720/

    10-12 01:08
    查看更多