C# Visual Studio多项目解决方案问题
我在VS 2017中有此解决方案,它有多个项目:C# Visual Studio多项目解决方案问题,c#,asp.net,visual-studio,C#,Asp.net,Visual Studio,我在VS 2017中有此解决方案,它有多个项目: 示例.DomainModels 例如,数据访问 例如,基础设施 示例.Web 因此,我的Web项目参考Infrastructure和Infrastructure项目参考DataAccess以及DomainModels项目。解决办法很有效 但是,如果在我的Web项目中,如果我尝试从DomainModels访问任何实体,我可以轻松访问该实体而不会出现任何错误,即使Web项目没有任何对DomainModels的引用 你能帮我理解这个项目是如何运作的
- 示例.DomainModels
- 例如,数据访问
- 例如,基础设施
- 示例.Web
Web
项目参考Infrastructure
和Infrastructure
项目参考DataAccess
以及DomainModels
项目。解决办法很有效
但是,如果在我的Web
项目中,如果我尝试从DomainModels
访问任何实体,我可以轻松访问该实体而不会出现任何错误,即使Web
项目没有任何对DomainModels
的引用
你能帮我理解这个项目是如何运作的吗?是否因为web项目间接引用了DomainModels(web
->基础设施
->DomainModels
)
谢谢。请调查洋葱架构: 域模型不应引用任何内容。为了达到这个目的,;你应该调查依赖倒置。我最近在这里问了一个关于依赖倒置的问题:
如果您想将域层与web分离,那么您可以引入服务层。事实上,根据您的评论,web将参考所有其他项目
编译时,基础架构将连接引用dataaccess和域模型命名空间,因此您可以从web访问dataaccess和域模型中存在的类型或命名空间,因为您是从web引用基础架构。是否有任何方法限制域实体从web访问?我不确定,但您可以使用访问修饰符、静态、密封、单例方法来限制对DomainEntities中存在的类的访问。既然您指的是基础设施,唯一的方法就是从基础设施中去掉域实体。谢谢您的回答。我明白。我只是想了解一下这里的情况。所以我这里的问题主要是关于引用,而不是架构和模式。DomainModels没有引用任何东西。请参阅我的最后一段关于如何将web层与域层分离的内容。好的。我得到了它。你问的问题帮助我理解了这个概念。对,这意味着应该使用DI来限制访问。是的。我还将包括一个服务层