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

问题描述

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

  • UI
  • 存储库
  • 启动

magicsix = [] asd = 0 fgh = 0 win = 6 while asd != win and fgh !=win: n1 = int(input("Enter your integer to the List: ")) n2 = int(input("Enter your second integer to the List: ")) magicsix.append(n1) magicsix.append(n2) print (magicsix) asd = sum(magicsix) fgh = magicsix[0] - magicsix[1] if asd == win: print("MagicSix") break elif asd == win: print("MagicSix") break elif magicsix.clear(): print("MagicSix not won") 项目依赖于 UIDomain 项目。

对于 DI 容器配置,Boot 项目依赖于 BootDomain 项目。

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

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

有没有办法在 ASP.NET Core 5 中关闭这种行为?

解决方法

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

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

要了解更多信息,请查看以下链接 bulk_create

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...