gpt4 book ai didi

c# - 解决循环引用 (C#)

转载 作者:太空狗 更新时间:2023-10-30 01:12:04 26 4
gpt4 key购买 nike

我在循环引用/依赖性方面遇到了一些问题,这些问题我已经坐了一整天了。我的思维过程一定有问题,我只是不明白。

这是我的项目:



Flip.Main (ASP.NET MVC)
翻转域(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 项目中的特定 Controller 操作。这是一个 ActionFilterAttribute,它需要实例化驻留在我的 Flip.Services 项目中的 SessionService。不过我不能将它放入我的 Utility 类中(因为 Flip.Services 已经引用了 Flip.Utility)。我也不认为它们应该在 Flip.Main 中 - 我是否必须为此制作另一个项目!?

(还有 20 个)

我觉得我在某个地方犯了一个错误,尤其是当我读到其他人通常不会遇到循环引用问题时。帮忙?

最佳答案

为所有重要类使用接口(interface)。将接口(interface)放在与实现不同的程序集中。

关于c# - 解决循环引用 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1320561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com