首先,不是我没有使用ORM,我也不允许.我必须使用ADO.NET手动滚动我的存储库.
我有两个对象:
public class Firm
{
public Guid Id { get; set; }
public string Name { get; set; }
public virtual IEnumerable<User> Users { get; set; }
}
public class User
{
public Guid Id { get; set; }
public string Username { get; set; }
public Firm Firm { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
注意彼此的引用,公司有一个用户列表,每个用户只有一个公司.
现在我想设计我的存储库:
public interface IFirmRepository
{
IEnumerable<Firm> FindAll();
Firm FindById(Guid id);
}
public interface IUserRepository
{
IEnumerable<User> FindAll();
IEnumerable<User> FindByFirmId(Guid firmId);
User FindById(Guid id);
} …Run Code Online (Sandbox Code Playgroud) .net c# dependency-injection circular-dependency repository-pattern
为了修复循环依赖关系,读取requireJs文档建议exports用于为模块创建一个空对象,该对象可立即供其他模块参考.
我尝试这个代码,但它似乎不起作用.怎么了?
PS:
阅读用于查看输出的注释,
尤其是setTimeout调用中的B模块.
// A module
define([
'b'
], function (b) {
console.log('B:', b); // B, Object
var A = {
boo: 1
};
return A;
});
Run Code Online (Sandbox Code Playgroud)
// B module
define([
'a',
'exports'
], function (a, exports) {
console.log('A:', a); // A, undefined (as I was expecting)
exports.A = function () {
return a;
}
var B = {
bar: 1
};
setTimeout(function () {
console.log('exports.A', exports.A()); // exports.A undefined
// I would like to access …Run Code Online (Sandbox Code Playgroud) javascript circular-dependency dependency-management requirejs
在尝试执行循环要求时,如何避免Lua 5.1的以下错误?
$ lua main.lua
lua: ./bar.lua:1: loop or previous error loading module 'foo'
stack traceback:
[C]: in function 'require'
./bar.lua:1: in main chunk
[C]: in function 'require'
./foo.lua:1: in main chunk
[C]: in function 'require'
main.lua:1: in main chunk
[C]: ?
Run Code Online (Sandbox Code Playgroud)
main.lua
require "foo"
require "bar"
print (Foo.getName())
print (Bar.getName())
Run Code Online (Sandbox Code Playgroud)
foo.lua
require 'bar'
Foo = {}
Foo.name = 'foo'
function Foo:getName()
return Foo.name .. Bar.name
end
Run Code Online (Sandbox Code Playgroud)
bar.lua
require 'foo'
Bar = {}
Bar.name = 'bar'
function Bar:getName() …Run Code Online (Sandbox Code Playgroud) 我在IntelliJ IDEA中有一个Android项目.它由两个模块组成:app和library.应用程序依赖于库和库依赖于应用程序(是的,它不好,但我有我拥有的,不能改变这个).项目设置中的IDEA警告我循环依赖,但项目正确构建.项目结构如下所示:
project
|__app
| |__src
| |__build.gradle
|__libarary
| |__src
| |__build.gradle
|__build.gradle
|__settings.gradle
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试迁移到基于Gradle的新Android构建系统,并在这里遇到麻烦.在我的build.gradlefrom app模块中,我添加依赖library
compile project(":library")
Run Code Online (Sandbox Code Playgroud)
另外我tryed添加在依赖library于app像
compile project(":app")
Run Code Online (Sandbox Code Playgroud)
但是当gradle试图组装库模块时,从构建系统中获取错误:
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':app'.
> Failed to notify project evaluation listener.
> Module version project:app:unspecified depends on libraries but is not a library itself
Run Code Online (Sandbox Code Playgroud)
在不改变项目结构的情况下,我可以做些什么
android build circular-dependency dependency-management gradle
我有一个Rails项目,它不时地以不可重现的方式在生产中抛出此异常.一切都在开发和测试中很好用,而且显然也在生产中,但ExceptionNotifier每隔几周都会通过电子邮件向我发送此异常...
我不知道发生了什么,所以我将尽可能多地转储有关我的环境的信息,希望其中一些可以帮助排除故障.
完整的错误是:
"Circular dependency detected while autoloading constant DeferredUpdatesHelper"
Run Code Online (Sandbox Code Playgroud)
DeferredUpdatesHelper是这样定义的模块lib/deferred_updates_helper.rb:
module DeferredUpdatesHelper
def self.something_something(params)
end
end
Run Code Online (Sandbox Code Playgroud)
我想不出这个模块有什么依赖.它非常简单,据我所知,它需要的是一个名为$ RedisPool的全局变量,因此不确定如何存在循环依赖...
该模块用于我的一个模型: models/user.rb
class User < ActiveRecord::Base
def self.process_deferred_something
DeferredUpdatesHelper.something_something(params) do
# do stuff
end
end
end
Run Code Online (Sandbox Code Playgroud)
从ActiveJob调用该方法:
class SomeJob < ActiveJob::Base
queue_as :default
def perform
User.process_deferred_something
end
end
Run Code Online (Sandbox Code Playgroud)
这是在Sidekiq流程中执行的,它每隔10分钟就会非常愉快地运行,除了偶尔我会得到其中一个......
在任何require地方都没有声明,或者至少在任何这些提到的文件中都没有声明......如上所述,在开发中一切都正常.
堆栈跟踪:
/app/vendor/bundle/ruby/2.1.0/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:492:in `load_missing_constant'
/app/vendor/bundle/ruby/2.1.0/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:184:in `const_missing'
/app/vendor/bundle/ruby/2.1.0/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:526:in `load_missing_constant'
/app/vendor/bundle/ruby/2.1.0/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:184:in `const_missing'
/app/app/models/user.rb:93:in `process_deferred_something'
/app/app/jobs/some_job.rb:5:in `perform'
/app/vendor/bundle/ruby/2.1.0/gems/activejob-4.2.1/lib/active_job/execution.rb:32:in `block in perform_now'
/app/vendor/bundle/ruby/2.1.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:117:in `call'
/app/vendor/bundle/ruby/2.1.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:117:in `call' …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个验证某个类型实例的属性.
为了做到这一点,我必须将其ObjectInstance转换为该类型.
我需要在该类型的成员上设置属性.
所以我们需要求助于and循环定义的关键字.
但是在下面的例子中我得到了错误
自定义属性必须调用对象构造函数
在下面标出的行上.
namespace Test
open System
open System.ComponentModel.DataAnnotations
[<AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)>]
type MyAttribute() =
class
inherit ValidationAttribute ()
override this.IsValid (value: Object, validationContext: ValidationContext) =
match validationContext.ObjectInstance with
| :? MyClass as item ->
// TODO more validation
ValidationResult.Success
| _ ->
new ValidationResult("No no no")
end
and MyClass(someValue) =
[<Required>]
[<Range(1, 7)>]
//vvvvvvvvvvvvvvv
[<MyAttribute>]
//^^^^^^^^^^^^^^^
member this.SomeValue : int = someValue
Run Code Online (Sandbox Code Playgroud)
我试着手动调用构造函数,例如:
[<MyAttribute()>]
// or
[<new …Run Code Online (Sandbox Code Playgroud) https://github.com/angular/angular-cli/pull/6813添加了关于循环依赖项的警告,我知道我可以使用“ showCircularDependencies”关闭所有警告:false。但是我宁愿保持循环依赖警告。有没有一种模式可以让我修复下面的用例,还是有一种方法可以专门禁用特定文件上的循环依赖插件?
最简单的情况是,如果我有3个文件:
表格模型
import { CustomModel } from './custom.model';
import { CustomForm } from './custom.form';
export class Forms {
items: CustomForm[] = [];
public constructor(models?: CustomModel[]) {
models.forEach(model => this.items.push(new CustomForm(model)));
}
}
Run Code Online (Sandbox Code Playgroud)
custom.model.ts
export class CustomModel {
nestedModels: CustomModel[];
}
Run Code Online (Sandbox Code Playgroud)
custom.form.ts
import { Forms } from './forms.model';
import { CustomModel } from './custom.model';
export class CustomForm {
nestedForms: Forms;
constructor(model: CustomModel) {
this.nestedForms = new Forms(model.nestedModels);
}
}
Run Code Online (Sandbox Code Playgroud)
这将导致以下警告:
WARNING in Circular …Run Code Online (Sandbox Code Playgroud) 我有一个MyProject项目,我有实现的IMyService接口和MyService类IMyService.在Startup.cs类中,我依赖注入它们:
// MyProject project | Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IMyService, MyService>();
}
Run Code Online (Sandbox Code Playgroud)
因为MyService有许多依赖项(对第三方等进行许多REST调用)我想为开发环境创建它的存根版本.我创建了引用MyProject的新MyStubsProject.我实现了对MyStubsProject的存根版本:IMyService
// MyStubsProject project
public class MyStubService : IMyService
{
...
}
Run Code Online (Sandbox Code Playgroud)
所以现在我想向Startup.cs类添加依赖注入:
// MyProject project | Startup.cs
public void ConfigureServices(IServiceCollection services)
{
if (isDevelopmentEnvironment)
services.AddScoped<IMyService, MyStubService>();
else
services.AddScoped<IMyService, MyService>();
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加它,MyProject和MyStubsProject之间将存在循环依赖.
我应该如何在Startup.cs中实现对类MyStubService或MyStubsProject项目的引用?
我们有一个ProjectB(仅主要项目,没有测试项目)依赖于ProjectA。ProjectA的测试(不是主要测试)取决于ProjectB。我们为每个项目使maven生成了两个单独的工件(主罐和测试罐)。因此,这里确实没有循环依赖,但是行家抱怨循环依赖。我想知道是否有一种方法可以告诉Maven,这实际上不是循环依赖项。
在ProjectA中,由于只有ProjectA测试依赖于ProjectB,所以我们在ProjectB的依赖项部分具有“测试”范围。
我知道,这个问题可能听起来很复杂,我已经尝试了在stackover流程中发现的所有内容都无法解决这个问题,所以请耐心等待
为了让你能够重现错误,我为你提供了整个代码
问题
我收到以下错误:
提供者解析错误:↵无法实例化循环依赖!InjectionToken_HTTP_INTERCEPTORS("[ERROR - >]"):在./AppModule@-1:-1中的NgModule AppModule中
有关场景的信息(注释)
注1 文件:response-interceptor.service.ts
路径: ./src/app/shared/interceptors/response-interceptor/
我正在拦截HTTPClient检查401错误的响应,当错误发生时我需要让用户重新登录.
要向用户显示重新登录提示,我已经创建了global-functions-services一个具有"relogin"功能的功能
注2 文件:global-function.service.ts
路径: ./src/app/shared/services/helper-services/global-function/
这是所有这一切开始发生的地方......我一注射了 PersonService
constructor(
public dialog: MatDialog,
private _personService: PersonService
) { }
Run Code Online (Sandbox Code Playgroud)
我收到此错误,在PersonService中我找不到任何import可能导致此问题的错误.
PersonService:
./src/app/shared/services/api-services/person/person.service.ts
import { IRequest } from './../../../interfaces/I-request';
import { environment } from 'environments/environment';
import { Injectable } from '@angular/core';
// for service
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/toPromise';
// models
import { Person …Run Code Online (Sandbox Code Playgroud)