在C#中有没有办法限制对间接引用库/DLL的调用?

在C#中有没有办法限制对间接引用库/DLL的调用?,c#,.net-core,dll,n-tier-architecture,dll-reference,C#,.net Core,Dll,N Tier Architecture,Dll Reference,我有一个项目是在3层架构设计。为了保持简单,我将简化我的案例,采用传统的三层结构,表示->业务逻辑->DAL 我在3个不同的项目中有这3层,因此我最终将有1个启动可执行文件和2个DLL。但是,我发现我可以从表示层调用DAL层,即使DAL层项目没有直接被表示层项目引用 我可以知道我是否有办法限制这些间接引用?或者我可以确保其他开发人员不能打这样的电话吗?呈现-项目应该只引用业务逻辑-项目 BusinessLogic应仅引用DAL 我相信Presentation引用了BusinessLogic和DA

我有一个项目是在3层架构设计。为了保持简单,我将简化我的案例,采用传统的三层结构,表示->业务逻辑->DAL

我在3个不同的项目中有这3层,因此我最终将有1个启动可执行文件和2个DLL。但是,我发现我可以从表示层调用DAL层,即使DAL层项目没有直接被表示层项目引用


我可以知道我是否有办法限制这些间接引用?或者我可以确保其他开发人员不能打这样的电话吗?

呈现
-项目应该只引用
业务逻辑
-项目

BusinessLogic
应仅引用
DAL

我相信
Presentation
引用了
BusinessLogic
DAL

确保
Presentation.csproj
-文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">
... (more stuff) ...
  <ItemGroup>
    <ProjectReference Include="..\BusinessLogic\BusinessLogic.csproj" PrivateAssets="All" />
  </ItemGroup>
</Project>

... (更多东西)。。。

并且不包含对DAL项目的引用。

呈现
-项目应仅引用
业务逻辑
-项目

BusinessLogic
应仅引用
DAL

我相信
Presentation
引用了
BusinessLogic
DAL

确保
Presentation.csproj
-文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">
... (more stuff) ...
  <ItemGroup>
    <ProjectReference Include="..\BusinessLogic\BusinessLogic.csproj" PrivateAssets="All" />
  </ItemGroup>
</Project>

... (更多东西)。。。

并且不包含对DAL项目的引用。

是的,我记得这是.NET Framework中的行为。。。我不知道为什么我可以从.NET Core的
表示层
中引用
DAL
。我确信我不会得到
表示项目
参考
DAL
如果您尝试在表示层中从DAL实例化一个类,那么如果您尝试(并且您的项目引用正确),它将无法编译。但我相信VisualStudio和Rider等公司对他们认为的“问题”有“快速修复”功能,因此您可以轻松添加对DAL-project的引用。原因似乎已在中说明,但仍然感谢您的帮助!是的,我记得这是.NET Framework中的行为。。。我不知道为什么我可以从.NET Core的
表示层
中引用
DAL
。我确信我不会得到
表示项目
参考
DAL
如果您尝试在表示层中从DAL实例化一个类,那么如果您尝试(并且您的项目引用正确),它将无法编译。但我相信VisualStudio和Rider等公司对他们认为的“问题”有“快速修复”功能,因此您可以轻松添加对DAL-project的引用。原因似乎已在中说明,但仍然感谢您的帮助!看,看。