首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# webAPi项目中的循环引用问题

C# webAPi项目中的循环引用问题
EN

Stack Overflow用户
提问于 2016-11-24 18:09:50
回答 2查看 228关注 0票数 2

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

在上图中,项目A中的控制器使用项目A的服务来完成实际工作,服务使用Repository来读取和写入数据库。它们都使用Autofac依赖注入。示例:使用各种服务的Controller的构造函数

代码语言:javascript
复制
 public DKMenuController(ITokenService tokenService, IUserService userservice, IDKMenuService dkMenuService)
    {
        _tokenService = tokenService;
        _dkMenuService = dkMenuService;
        _userservice = userservice;
    }

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

代码语言:javascript
复制
 public DKMenuService(IRepository repository)
    {
        this._repository = repository;
    }

在应用程序启动时注册各种服务,如下所示

代码语言:javascript
复制
    this.RegisterType<Repository>().As<IRepository>().InstancePerRequest();
 this.RegisterType<DKMenuService>().As<IDKMenuService>().InstancePerRequest();

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

EN

回答 2

Stack Overflow用户

发布于 2016-11-24 18:23:09

这可能会有一些工作,但修复方法是将Repository移动到新的ProjectRepo中。

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

票数 2
EN

Stack Overflow用户

发布于 2016-11-24 18:11:37

据我所知,您在这里显示的不是循环引用。您不能沿着图表上的箭头绘制圆圈。

如果存储库类在Project A Services上,那么您有一个循环引用,但这不是在问题上绘制的。记住这一点,如果是这样的话,将存储库移到项目A之外。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40783461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档