Visual Studio多项目解决方案问题

3

我在VS 2017中有一个解决方案,其中包含多个项目:

  • Example.DomainModels
  • Example.DataAccess
  • Example.Infrastructure
  • Example.Web

我的 Web 项目引用了 Infrastructure,而 Infrastructure 项目又引用了 DataAccessDomainModels 项目。该解决方案运行良好。

然而,在我的 Web 项目中,如果我尝试访问来自 DomainModels 的任何实体,即使 Web 项目没有引用 DomainModels,我也可以轻松访问而没有任何错误。

请问您能帮我理解这个项目的引用是如何工作的吗?这是因为 web 项目间接引用了 DomainModels 吗(Web -> Infrastructure -> DomainModels)?

谢谢。

2个回答

1

谢谢你的回答。我明白了。我只是试图理解这里的引用问题。所以我的问题主要与引用有关,而不是架构和模式。DomainModels 无论如何都没有引用任何东西。 - Aneeq
请看我最后一段关于如何将Web层与领域层分离的内容。 - w0051977
好的,我明白了。你提出的问题帮助我理解了这个概念。这意味着应该使用 DI 来限制访问。 - Aneeq
是的,我也会包括一个服务层。 - w0051977

1

根据您的评论,网站将与所有其他项目有关联。

当您编译时,基础设施将附加对数据访问和域模型命名空间的引用数据,因此您可以从 web 访问 dataaccess 和 domain models 中存在的类型或命名空间,因为您从 web 引用了基础设施。


有没有办法限制Web对DomainEntities的访问? - Aneeq
1
我不确定,但你可以使用访问修饰符、静态、密封和单例方法来限制DomainEntities中类的访问。由于你正在引用Infrastructure,唯一的方法是将DomainEntities从Infrastructure中移除。 - karthik kasubha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接