我一直在处理与循环引用/依赖相关的问题,已经花了一整天的时间。我的思维过程肯定有问题,我真的不明白。
这是我的项目:
Flip.Main (ASP.NET MVC)
Flip.Domain (C# DLL)
Flip.Services (C# DLL)
Flip.Utility (C# DLL)
当前参考/依赖项:
Flip.Main -> Flip.Domain, Flip.Services, Flip.Utility
Flip.Services -> Flip.Domain, Flip.Utility
Flip.Domain -> Flip.Utility
我希望在项目中进行结构化处理,使得服务项目拥有所有服务,领域项目包含模型、存储库和“流畅”扩展以查询模型,而主要和实用项目则相当自解释。
遇到的问题:
1)在Flip.Services项目中有一个EmailService,需要发送本地化邮件。所有本地化都在Flip.Main的App_GlobalResources中完成。但是不知道如何将强类型的电子邮件和其他本地化资源传递到我的服务层,因为Flip.Main已经依赖于服务层,因此无法让其再次依赖Main项目。
2)我有业务类(例如CustomerSearchFilter),代表强类型搜索查询。我想将这些业务类放在Flip.Domain项目之外,因为它们不是领域模型的一部分。然而,在我的CustomerSearchFilter类中,我有领域类实例(例如CustomerGroup),因此它需要了解领域类。同时,我的Flip.Domain项目中的流畅接口也需要知道CustomerSearchFilter是什么,以便将其应用于我的IQueryable接口。又是循环引用。
3)我有一个自定义的[AuthorizeSessionState]属性,用于装饰ASP.NET MVC Flip.Main项目中的特定控制器操作。这是一个ActionFilterAttribute,需要实例化我的SessionService,该服务位于Flip.Services项目中。但我不能将其放入我的Utility类中(因为Flip.Services已经引用了Flip.Utility)。我认为它们也不应该在Flip.Main中 - 我需要为此再创建另一个项目吗?
(还有20个问题)
我觉得我在某个地方犯了错误,特别是当我读到其他人通常不会遇到循环引用问题时。请帮帮我?