gpt4 book ai didi

c# - C# webAPI 项目中的循环引用问题

转载 作者:行者123 更新时间:2023-11-30 23:18:38 25 4
gpt4 key购买 nike

我有一个 C# web api 项目,其架构如下图所示 (ProjectA) enter image description here

在上图中,项目 A 中的 Controller 使用项目 A 的服务来完成实际工作,而服务使用存储库来读取和写入数据库。他们都使用 Autofac 依赖注入(inject)。例子:使用各种服务的Controller的构造函数

 public DKMenuController(ITokenService tokenService, IUserService userservice, IDKMenuService dkMenuService)
{
_tokenService = tokenService;
_dkMenuService = dkMenuService;
_userservice = userservice;
}

使用底层存储库与数据库通信的服务的构造函数

 public DKMenuService(IRepository repository)
{
this._repository = repository;
}

Application启动时注册各种服务如下

    this.RegisterType<Repository>().As<IRepository>().InstancePerRequest();
this.RegisterType<DKMenuService>().As<IDKMenuService>().InstancePerRequest();

现在我想添加另一个项目(在示例 ProjectB 中命名),它只是一个类库,将从 ProjectA 服务调用,将执行某些操作,然后将使用 ProjectA 的存储库模式并将数据保存在数据库中。问题是这种设计会导致循环引用,这两个项目无法编译。这里也有类似的问题How to solve circular reference?但答案是否正确尚不清楚。有什么想法吗?

最佳答案

这可能需要一些工作,但解决方法是将 Repository 移动到新的 ProjectRepo 中。

然后让ProjectAProjectB都引用ProjectRepo,然后ProjectA也可以引用ProjectB B 不需要 A。

关于c# - C# webAPI 项目中的循环引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40783461/

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