如何在dagger2使用接口注入

问题描述 投票:0回答:1

考虑以下结构:

public class WaterWorld implements IWorld {

    ...
    @Inject
    CreationMode creationMode;

    @Override
    public final void init() {
        WorldModule.getComponent().inject(this);
    }
    ...
}

是否有可能为WaterWorld得到的依赖,如果Component具有以下结构:

    void inject(IWorld world);

我得到空这样。但是,如果我尝试做下面的

    void inject(WaterWorld world);

那么它的工作原理。不过,我有许多类实现IWorld。我想做的事是这样:void inject(IWorld world);如何做到这一点,还是有一些其他的通用解决方案?

android dependency-injection interface dagger-2 dagger
1个回答
0
投票

不,匕首会一直注入在inject(Foo foo)方法指定的类。它将在父类型注入的对象,但它不会在子类中注入的对象。 匕首使用指定生成用于注射代码的类型,但如果你没有指定具体的类,然后匕首根本不知道这件事情,并不会注入其字段。

注意:你不给任何具体的例子,但它看起来像你可以很好的使用构造器注入代替,它具有无需手动注射或注射在组件的方法。如果你有相同的接口的多种实现你甚至可以看看多绑定匕首。

© www.soinside.com 2019 - 2024. All rights reserved.