Unity RegisterType - 避免UI引用中间层依赖项

时间:2014-01-21 14:51:12

标签: c# asp.net-web-api unity-container

我有一个项目解决方案,Api(WebApi项目)和Domain(库项目)。我使用Unity作为我的IoC。域依赖于Lib(第三方库)。我想要RegisterType();在我的Unity注册中,它位于Api项目中。

建议的方法是什么?

  1. 在Domain和Api中引用第三方只是为了允许RegisterType?
  2. 在Domain中创建UnityConfig类,将Unity容器作为输入?
  3. 其他?

1 个答案:

答案 0 :(得分:1)

1)在Web API项目中引用第三方和Domain,并在Web API中设置容器。

设置容器的最佳位置是应用程序的所谓composition root。因此,例如,如果您使用的是自托管主机,则该主机项目将引用所有其他主机并执行容器设置。如果您的Web API主机只是一个ASP.NET应用程序,那么您应该在Application_Start方法中连接依赖项,这意味着该项目必须引用所有其他项。

所以你可以拥有以下项目(每个项目都参考前面的所有项目):

  1. 具有一些域逻辑的库(
  2. Web API控制器和将公开引用库(ies)的REST外观的东西
  3. 主机应用程序(即组合根目录)