【发布时间】:2016-11-24 10:09:50
【问题描述】:
我有一个 C# web api 项目,其架构如下图所示 (ProjectA)
在上图中,项目 A 中的控制器使用项目 A 的服务来完成实际工作,而服务使用存储库来读取和写入数据库。 它们都使用 Autofac 依赖注入。 例子: 使用各种服务的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 的存储库模式并将数据保存在 DB 中。 问题是这种设计会导致循环引用,并且 2 个项目无法编译。 这里有一个类似的问题How to solve circular reference? 但答案是否正确尚不清楚。 有什么想法吗?
【问题讨论】:
-
图表中没有循环依赖。你能澄清一下循环依赖在哪里吗?
-
@Enigmativity - 查看标题,2 个 项目(列)确实有一个圆圈。
-
@HenkHolterman - 什么标题?图中没有圆圈。这是一个有向无环图。
标签: c# reference circular-reference