ASP.net核心依赖项反转

时间:2018-09-14 08:18:35

标签: asp.net-core dependency-injection

因此,我已阅读有关Asp.net核心的依赖项注入的文章:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.1

但是我看不出它如何进行依赖的反转

到StartUp类ConfigureService方法中的具体类的绑定接口的方式意味着您的主项目必须引用注入的任何依赖项。更糟糕的是,如果您的依赖项引用了主项目(例如,使用其模型),您将以这种方式进入循环依赖项。 有什么方法可以从单独的第三个项目(程序集)注入依赖项?如何避免这种情况?

1 个答案:

答案 0 :(得分:1)

您不应依赖主项目,因为它是应用程序的根。

如果将公共接口或与此相关的模型放在单独的组件中,则可以安全地使用或实现它们而无需交叉引用,并避免循环依赖。这就是依赖项反转的全部内容:Service -> Contract <- Implementation

话虽如此,注册服务而不使用代码中明确引用其实现的方法是使用IHostingStartup接口。如果程序集具有实现该接口的类以及具有该类类型的HostingStartup属性,则ASP.NET Core Web Host将使用它来增强其配置。当然,您必须首先添加对该程序集的引用。

您可以从文档中获取更多信息:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/platform-specific-configuration