依赖倒置原则。为什么我可以访问 ASP.NET Core 5 中的非直接引用项目的 类?

Dependency Inversion Principle. Why can I access classes of a non-directly referenced project in ASP.NET Core 5?

假设我的解决方案中有四个项目:

UI 项目依赖于 DomainBoot 项目。

Boot 项目依赖于 DomainRepository 项目的 DI 容器配置。

如果我在 ASP.NET Core 5 中编写此代码,UI 代码可以访问和实例化 Repository 类,即使我没有依赖项UI 项目。

在 .NET Framework 4.8 中,这没有发生。这种行为使隔离变得不可能,因此这种配置中的依赖倒置原则很容易被破坏。

在 ASP.NET Core 5 中有关闭该行为的方法吗?

这是.NET Core的默认行为,如果你想改变这个并且不允许UI间接访问Repository层,你可以这样设置.csproj 文件下方:

 <ProjectReference Include="..\Boot\Boot.csproj" >
  <ExcludeAssets>all</ExcludeAssets>
</ProjectReference>

要了解更多信息,请查看下面的内容link link