依赖倒置原则。为什么我可以访问 ASP.NET Core 5 中的非直接引用项目的 类?
Dependency Inversion Principle. Why can I access classes of a non-directly referenced project in ASP.NET Core 5?
假设我的解决方案中有四个项目:
- UI <- 启动项目
- 域
- 存储库
- 开机
UI
项目依赖于 Domain
和 Boot
项目。
Boot
项目依赖于 Domain
和 Repository
项目的 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
假设我的解决方案中有四个项目:
- UI <- 启动项目
- 域
- 存储库
- 开机
UI
项目依赖于 Domain
和 Boot
项目。
Boot
项目依赖于 Domain
和 Repository
项目的 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