我在循环引用/依赖方面遇到了几个问题,我整天都坐在那儿。我的思维过程一定有问题,我只是不明白。
这是我的项目:
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 已经依赖于服务层,因此我可以让它依赖回主项目。
2) 我有业务类,例如代表强类型搜索查询的 CustomerSearchFilter。我想要 Flip.Domain 项目之外的那些业务类,因为它们不是域模型的一部分。但是,在我的 CustomerSearchFilter 类中,我有域类实例(例如 CustomerGroup),因此它需要了解域类。同时我的 Flip.Domain 项目中的 Fluent 接口需要知道 CustomerSearchFilter 是什么,以便我可以将它应用到我的 IQueryable 接口。再次循环引用。
3) 我有一个自定义的 [AuthorizeSessionState] 属性,我用它来装饰我的 ASP.NET MVC Flip.Main 项目中的特定控制器操作。这是一个 ActionFilterAttribute,它需要实例化位于我的 Flip.Services 项目中的我的 SessionService。我不能把它放到我的 Utility 类中(因为 Flip.Services 已经引用了 Flip.Utility)。我认为他们也不应该在 Flip.Main 中——我是否必须为此制作另一个项目!?
(还有 20 个)
我觉得我在某个地方犯了错误,尤其是当我读到其他人通常不会遇到循环引用问题时。帮助?