我有一个可序列化的模板类:
可序列化.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 类使用了一个继承自 …
我的应用程序是一个 Gradle 多模块项目,由多个服务和一个服务通用模块组成。
\n\nI\xc2\xb4ve 将所有模块共有的所有依赖项提取到根 build.gradle 中,并且我还想在所有子项目中包含service-common模块,这在理论上是可行的,但 I\xc2\xb4m 得到了循环依赖问题,因为它包含在其自身中。
\n\napply 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) 我在 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)
我尝试过的:
@Inject(forwardRef(() => TaskService))
private readonly tasksService: TaskService
Run Code Online (Sandbox Code Playgroud)
onModuleInit() {
this.userService = this.moduleRef.get(UserService);
}
Run Code Online (Sandbox Code Playgroud)
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) 官方循环依赖说:
当两个类相互依赖时,就会发生循环依赖。例如,A 类需要 B 类,B 类也需要 A 类。在 Nest 中,模块之间和提供者之间可能会出现循环依赖。
虽然应该尽可能避免循环依赖,但你不能总是这样做。
不使用的原因是什么forwardRef()?
难道就不能有第二个参考二等吗?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) 当我尝试运行测试时,出现ImportError:无法从部分初始化的模块“libs.elastic_search_hunt”导入名称“Result”(很可能是由于循环导入)错误。但我在代码中没有看到任何循环导入。
我有一个名为elastic_search_hunt 的包,其中包含 3 个模块:
我还有__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) 这是我的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) 我想向我用 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) 我正在使用 TypeScript 为网站开发一个简单的 API,代码运行良好,但我有一个需要修复的循环依赖项。
可以在这里找到该项目的(非常)最小示例:https ://codesandbox.io/s/dreamy-perlman-lpq6gh
在本例中,修复 api/index.ts 循环依赖的最佳方法是什么?
我尝试使用继承类,但我不知道从另一个子类调用类子类的最佳方法。
谢谢!
您好,\n以下代码示例会引发错误:
\nTypeError: 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)\nRun Code Online (Sandbox Code Playgroud)\n目前我正在尝试了解问题到底是什么以及如何在 typescript/javascript 中实现工厂模式。有几种行为我不太理解:
\n如果我实现父类而不使用类型“this”与工厂方法结合使用,则可以防止错误,但它看起来相当方便。抽象方法重复背后的目标是它返回一个子类实例。我可以在每个子类中实现它,但在我的现实世界项目中,复杂性要高得多。
\nsrc/\n child.ts\n factory.ts\n index.ts\n parent.ts\n main.ts\n second-child.ts\nRun Code Online (Sandbox Code Playgroud)\nTypeError: Super constructor null of SecondChild is not a constructor\n at new …Run Code Online (Sandbox Code Playgroud) typescript ×3
nestjs ×2
c++ ×1
dependencies ×1
express ×1
fyne ×1
go ×1
gradle ×1
graphql ×1
import ×1
javascript ×1
multi-module ×1
node.js ×1
package ×1
python ×1
spring ×1
structure ×1
subproject ×1
templates ×1