我对 C# 和依赖注入非常陌生。目前我正在开发一个新项目,希望在技术上取得进步。
在这个项目中,我遇到了三种导致循环依赖的情况。
我读了很多关于这方面的内容并找到了诸如Lazy<T>和 之类的解决方案IServiceProvider的解决方案,但我想学习针对此问题的干净解决方案,并希望遵循最常见的建议来重构代码。
在这个例子中我们有四个服务:
AccountService-> 登录、注销等
HttpService-> 做 API 的事情
LogService-> 做一些日志记录
LogRepository-> 用于 EF 的日志表/包装器的 CRUD
AccountService使用 API 通过 API 进行身份验证HttpService。后来,我想使用HttpServiceAPI 通过 API 获取更多数据。HttpService现在需要AccountService获取令牌来验证请求。这导致循环依赖错误。
账户服务
public interface IAccountService
{
Identity Identity { get; }
Task Login(Credentials Credentials);
Task Logout();
}
public class AccountService : IAccountService
{
public Identity Identity { get; private set; }
private readonly IHttpService _httpService;
private …Run Code Online (Sandbox Code Playgroud)