gpt4 book ai didi

java - 不完整父级上 Dagger .plus() 的回溯

转载 作者:搜寻专家 更新时间:2023-10-31 20:34:16 25 4
gpt4 key购买 nike

考虑一个 Dagger 模块:

@Module(library = true, complete = false)
public static class Module {
@Provides
public Contextualized providesContextualized(Context ctx) {
return new Contextualized(ctx.getUsername());
}
// ... and many more such provides.
}

上下文是一个对象,可以连接到例如一个 HTTP session 在启动时无法知道,通常情况下会创建一个图:

@Module(library = true, complete = false)
public static class ContextModule {
private final String username;
public ContextModule(String username) { this.username = username; }

@Provides
public Context providesContext() {
return new Context() {
public String getUsername() { return username; }
};
}
}

鉴于 Module 足够长,它似乎使首先为 Module 创建一个图表是有意义的:

ObjectGraph baseline = ObjectGraph.create(new Module());

然后,在处理特定请求时,创建一个唯一的使图完整的图:

ObjectGraph withContext = baseline.plus(new ContextModule("killroy"));

然而,.plus() 似乎假定继承图是完整的:

java.lang.IllegalStateException: Errors creating object graph:
Context could not be bound with key Context required by class PlusExample$Module
at dagger.internal.ThrowingErrorHandler.handleErrors(ThrowingErrorHandler.java:34)
at dagger.internal.Linker.linkRequested(Linker.java:182)
at dagger.internal.Linker.linkAll(Linker.java:109)
at dagger.ObjectGraph$DaggerObjectGraph.linkEverything(ObjectGraph.java:244)
at dagger.ObjectGraph$DaggerObjectGraph.plus(ObjectGraph.java:203)
at PlusExample.plusFailsOnIncompleteModule(PlusExample.java:46)

我是否误解了 .plus() 的作用或者这是一个限制? Dagger ?有没有其他一些直接的方法来介绍用户迟到图表? (如果每个都提供,那会很烦人在 Module 中必须从 threadlocal 或一些这样的。)

最佳答案

看起来像是您问题的答案:https://github.com/square/dagger/issues/384

希望对您有所帮助!

关于java - 不完整父级上 Dagger .plus() 的回溯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24424505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com