在类型绑定DI框架中实现业务逻辑是正确的吗?

时间:2013-08-02 10:34:26

标签: dependency-injection ninject

public IRedirect FactoryStrategyRedirect()
{
  if (_PasswordExpired) {
    return _UpdatePasswordRedirectorFactory.Create();
  } else {
    return _DefaultRedirectorFactory.Create();
  }
}

此策略工厂方法可以替换为类型绑定和when子句:

Bind<IRedirect>.To<UpdatePasswordRedirector>.When(c=> c.kernel.get<SomeContext>().PasswordExpired()) 
Bind<IRedirect>.To<DefaultRedirector>.When(c=> not c.kernel.get<SomeContext>().PasswordExpired())

我想知道这两种方法中的哪一种更正确。有什么优点和缺点。

特别是在逻辑更复杂且需要测试更多变量以及返回更具体类的情况下。

在绑定中实现业务逻辑是对的吗?

1 个答案:

答案 0 :(得分:0)

我想说在任何情况下都应该阻止在Composition Root内部使用业务逻辑。你应该把所有关于正确布线的东西组合起来,并且你想要进行集成测试来测试这种布线的正确性。

应用程序代码应该全部与业务逻辑有关,您应该使用单元测试来验证业务逻辑。

虽然在你的情况下,差异可能是微不足道的,但是线条开始变得非常快,你最终会得到一个复杂,难以阅读和难以维护的作曲根。