标签: circular-dependency

如何处理模板类标头中的循环 #include 调用?

与交叉引用标头中的错误“未终止的条件指令”相关

我有一个可序列化的模板类:

可序列化.h

#pragma once
#ifndef SERIALIZABLE_H
#define SERIALIZABLE_H
#include "Logger.h"
#include <string>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <boost/exception/diagnostic_information.hpp>
#include <boost/exception_ptr.hpp>

template<class T>
class Serializable {
public:
    static bool Deserialize(Serializable<T>* object, std::string serializedObject) {
        try {
            return object->SetValuesFromPropertyTree(GetPropertyTreeFromJsonString(serialized));
        } catch (...) {
            std::string message = boost::current_exception_diagnostic_information();
            Logger::PostLogMessageSimple(LogMessage::ERROR, message);
            std::cerr << message << std::endl;
        }
    }
private:
    static boost::property_tree::ptree GetPropertyTreeFromJsonString(const std::string & jsonStr) {
        std::istringstream iss(jsonStr);
        boost::property_tree::ptree pt;
        boost::property_tree::read_json(iss, pt);
        return pt;
    }
}
#endif // SERIALIZABLE_H
Run Code Online (Sandbox Code Playgroud)

但问题是 Logger 类使用了一个继承自 …

c++ templates circular-dependency template-classes

2
推荐指数
1
解决办法
204
查看次数

Gradle 多模块项目:将模块依赖项应用于除自身之外的所有子项目

我的应用程序是一个 Gradle 多模块项目,由多个服务和一个服务通用模块组成。

\n\n

I\xc2\xb4ve 将所有模块共有的所有依赖项提取到根 build.gradle 中,并且我还想在所有子项目中包含service-common模块,这在理论上是可行的,但 I\xc2\xb4m 得到了循环依赖问题,因为它包含在其自身中。

\n\n
apply plugin: \'java\'\n\ngroup = \'com.myapplication\'\n\next {\n    set(\'springCloudVersion\', "2.2.0.RELEASE")\n    set(\'springBootVersion\', "2.2.2.RELEASE")\n}\n\nallprojects {\n\n    repositories {\n        jcenter()\n        mavenCentral()\n        maven { url \'https://repo.spring.io/milestone\' }\n    }\n\n}\n\nbuildscript {\n    ext {\n        springBootVersion = "2.2.2.RELEASE"\n    }\n\n    repositories {\n        maven { url \'https://repo.spring.io/plugins-snapshot\' }\n        jcenter()\n        mavenCentral()\n    }\n\n    dependencies {\n        classpath \'io.spring.gradle:dependency-management-plugin:1.0.7.BUILD-SNAPSHOT\'\n        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")\n    }\n}\n\nsubprojects {\n    version = \'1.0\'\n\n    apply plugin: \'org.springframework.boot\'\n    apply plugin: "io.spring.dependency-management"\n    apply plugin: \'java\'\n\n    ext {\n        springCloudVersion = "2.2.0.RELEASE"\n        springBootVersion = "2.2.2.RELEASE"\n    }\n\n …
Run Code Online (Sandbox Code Playgroud)

spring circular-dependency subproject gradle multi-module

2
推荐指数
1
解决办法
3847
查看次数

索引 [1] 处的模块属于“未定义”类型。检查您的导入语句和模块的类型

我在 NestJs 中遇到了循环依赖问题。错误:

Scope [AppModule -> PlanModule -> TaskModule] +17ms
Error: Nest cannot create the UserModule instance.
The module at index [1] of the UserModule "imports" array is undefined.
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

  • 在构造函数中的用户和任务文件中的解析器文件中使用forwardRef :
@Inject(forwardRef(() => TaskService))
private readonly tasksService: TaskService
Run Code Online (Sandbox Code Playgroud)
  • 实现OnModuleInit接口:
onModuleInit() {
  this.userService = this.moduleRef.get(UserService);
}
Run Code Online (Sandbox Code Playgroud)
  • 使用不带index.ts文件的导入:
import { TaskModule } from '../task/task.module';
Run Code Online (Sandbox Code Playgroud)

用户模块

@Module({
  providers: [UserService, UserResolver],
  exports: [UserService],
  imports: [JournalModule, PlanModule, TaskModule],
})
export class UserModule {}
Run Code Online (Sandbox Code Playgroud)

任务模块

@Module({
  providers: [TaskService, TaskResolver],
  exports: …
Run Code Online (Sandbox Code Playgroud)

circular-dependency typescript graphql nestjs

2
推荐指数
1
解决办法
3990
查看次数

Nestjs 循环依赖 forwardRef() 的缺点

官方循环依赖说:

当两个类相互依赖时,就会发生循环依赖。例如,A 类需要 B 类,B 类也需要 A 类。在 Nest 中,模块之间和提供者之间可能会出现循环依赖。

虽然应该尽可能避免循环依赖,但你不能总是这样做。

不使用的原因是什么forwardRef()

circular-dependency nestjs

2
推荐指数
1
解决办法
1676
查看次数

EF Core 第二个对象引用生成循环依赖

难道就不能有第二个参考二等吗?FirstClass 包含 SecondClasses,SeocondBegin 包含 begin 元素。使用此代码,我在 SaveChanges 中得到了执行:

System.InvalidOperationException: 'Unable to save changes because a circular dependency was detected in the data to be saved: 'FirstClass { 'Id': -2147482647 } [Added] <-
SecondClasses FirstClass { 'FirstClassId': -2147482647 } SecondClass { 'Id': -2147482647 } [Added] <-
SecondBegin { 'SecondBeginId': -2147482647 } FirstClass { 'Id': -2147482647 } [Added]'.'
Run Code Online (Sandbox Code Playgroud)

我希望具有此属性,因为第二类应该是“链接列表”,并且集合 SecondClasses 不包含来源是:

namespace EFTestApp
{
    public class FirstClass
    {
        public int Id { get; set; }
        public int? SecondBeginId { get; set; } …
Run Code Online (Sandbox Code Playgroud)

dependencies entity-framework circular-dependency

2
推荐指数
1
解决办法
2197
查看次数

自定义包和 __init__.py 中的 Python 循环导入

当我尝试运行测试时,出现ImportError:无法从部分初始化的模块“libs.elastic_search_hunt”导入名称“Result”(很可能是由于循环导入)错误。但我在代码中没有看到任何循环导入。

我有一个名为elastic_search_hunt 的包,其中包含 3 个模块:

  1. 弹性查询.py
  2. 弹性查询结果.py
  3. 搜索处理器.py

我还有__init__.py文件,其中包含以下文本:

from libs.elastic_search_hunt.elastic_query import Query
from libs.elastic_search_hunt.search_processor import SearchProcessor
from libs.elastic_search_hunt.elastic_query_result import Result

__all__ = ['Query', 'SearchProcessor', 'Result']  # I guess it does not have any effect
Run Code Online (Sandbox Code Playgroud)

elastic_query.py仅具有外部导入。

elastic_query_result.py相同。

search_processor.py具有以下导入:

from . import Query
from . import Result
Run Code Online (Sandbox Code Playgroud)

然后我有一个测试文件,它导入Query类:

from libs.elastic_search_hunt import Query
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,我收到以下错误:

test_query.py:2: in <module>
    from libs.elastic_search_hunt import Query
..\src\libs\elastic_search_hunt\__init__.py:2: in <module>
    from libs.elastic_search_hunt.search_processor import SearchProcessor
..\src\libs\elastic_search_hunt\search_processor.py:4: in <module> …
Run Code Online (Sandbox Code Playgroud)

python import circular-dependency package

2
推荐指数
1
解决办法
3491
查看次数

错误:将循环结构转换为 JSON --&gt; 从构造函数“Topology”的对象开始 | Nodejs Express 中的 property 's' -&gt; object with ....

这是我的index.js。我正在尝试通过查询字符串进行搜索功能。我收到来自客户端的查询,但错误发生在 Campground.find() 中,它给出了上述错误

app.get('/results', (req, res) =>{
const {search_query} = req.query
console.log(search_query);
const campgrounds = Campground.find({title: 'gizzly Camp'})
res.send(campgrounds)})
Run Code Online (Sandbox Code Playgroud)

模型:

const ImageSchema = Schema({
url:String,
filename: String,})


const CampgroundSchema = Schema({
title: String,
image: [
    ImageSchema
],
price: Number,
description: String,
category: {
    type: Schema.Types.ObjectId,
    ref: 'Category',
},
location: String,
geometry: {
    type: {
        type: String,
        enum: ['Point'],
        required: true
    },
    coordinates: {
        type: [Number],
        required: true,
    }
},
author:
{
    type: Schema.Types.ObjectId,
    ref: 'User'
},
reviews: [
    {
        type: …
Run Code Online (Sandbox Code Playgroud)

structure circular-dependency node.js express

2
推荐指数
1
解决办法
1607
查看次数

如何使用 fyne 避免 GUI 应用程序中的循环依赖?

我想向我用 Go 编写的命令行应用程序添加一个 GUI,但我遇到了 fyne 和循环依赖项的问题。

考虑这个简单的例子来说明我面临的问题:假设一个按钮触发了我的模型类上的一个耗时的方法(比如获取数据等),并且我希望视图在任务完成时更新。

我首先实现了一个非常幼稚且完全不解耦的解决方案,这显然会遇到 go 编译器引发的循环依赖错误。考虑以下代码:

主程序

package main

import (
    "my-gui/gui"
)

func main() {
    gui.Init()
}
Run Code Online (Sandbox Code Playgroud)

图形用户界面/gui.go

package gui

import (
    "my-gui/model"
    //[...] fyne imports
)

var counterLabel *widget.Label

func Init() {
    myApp := app.New()
    myWindow := myApp.NewWindow("Test")

    counterLabel = widget.NewLabel("0")

    counterButton := widget.NewButton("Increment", func() {
        go model.DoTimeConsumingStuff()
    })

    content := container.NewVBox(counterLabel, counterButton)

    myWindow.SetContent(content)
    myWindow.ShowAndRun()
}

func UpdateCounterLabel(value int) {
    if counterLabel != nil {
        counterLabel.SetText(strconv.Itoa(value))
    }
}
Run Code Online (Sandbox Code Playgroud)

模型/model.go

package model

import (
    "my-gui/gui" …
Run Code Online (Sandbox Code Playgroud)

model-view-controller circular-dependency go fyne

2
推荐指数
1
解决办法
213
查看次数

解决 TypeScript 中循环依赖的最佳方法

我正在使用 TypeScript 为网站开发一个简单的 API,代码运行良好,但我有一个需要修复的循环依赖项。

可以在这里找到该项目的(非常)最小示例:https ://codesandbox.io/s/dreamy-perlman-lpq6gh

在本例中,修复 api/index.ts 循环依赖的最佳方法是什么?

我尝试使用继承类,但我不知道从另一个子类调用类子类的最佳方法。

谢谢!

circular-dependency typescript

2
推荐指数
1
解决办法
5910
查看次数

Typescript/Javascript 循环依赖:类扩展值未定义不是构造函数或 null

问题

\n

您好,\n以下代码示例会引发错误:

\n
TypeError: Super constructor null of SecondChild is not a constructor\n    at new SecondChild (<anonymous>:8:19)\n    at <anonymous>:49:13\n    at dn (<anonymous>:16:5449)\n
Run Code Online (Sandbox Code Playgroud)\n

目前我正在尝试了解问题到底是什么以及如何在 typescript/javascript 中实现工厂模式。有几种行为我不太理解:

\n
    \n
  1. 如果我删除代码的第二个子项,则一切正常,除非我交换子项导出的 index.ts 文件中导出语句的顺序。
  2. \n
  3. 如果我将文件 child.ts 和 secondary-child.ts 合并到一个定义这两个类的文件中,则异常也消失了
  4. \n
\n
    \n
  • 该错误是否与循环依赖相关?如果是这样,那么 typescript/javascript 中循环依赖背后的问题到底是什么?
  • \n
  • 有人可以向我解释代码示例的行为吗?
  • \n
\n

如果我实现父类而不使用类型“this”与工厂方法结合使用,则可以防止错误,但它看起来相当方便。抽象方法重复背后的目标是它返回一个子类实例。我可以在每个子类中实现它,但在我的现实世界项目中,复杂性要高得多。

\n

项目结构:

\n
src/\n  child.ts\n  factory.ts\n  index.ts\n  parent.ts\n  main.ts\n  second-child.ts\n
Run Code Online (Sandbox Code Playgroud)\n

文件内容

\n

主要.ts:

\n
TypeError: Super constructor null of SecondChild is not a constructor\n    at new …
Run Code Online (Sandbox Code Playgroud)

javascript circular-dependency factory-pattern typescript

2
推荐指数
1
解决办法
4950
查看次数