多次注射匕首

Avi*_*h R 2 android dependency-injection dagger

是否有可能在dagger中获取接口/类的实现列表?

我正在寻找像Ninject的Multi-Injection这样东西.

Avi*_*h R 5

更新为Dagger2

已经记录在案.

TL; DR:

在您的提供商

@Provides @IntoSet Foo provideAFoo() { return AFoo(); } 
Run Code Online (Sandbox Code Playgroud)

......其他模块或同一模块......

@Provides @IntoSet Foo provideBFoo() { return BFoo(); } 
Run Code Online (Sandbox Code Playgroud)

......以及其他地方......

class Bar { 
    @Inject Set<Foo> allMyFoos; 
} 
Run Code Online (Sandbox Code Playgroud)

从Dagger2开始,可以映射依赖关系(即java.util.Map).

原始答案(适用于Dagger1)

看起来文档不完整,但Dagger已经提供了这个.

例如(从dagger的google组中提取),使用Provide.Type.SET提供实现

@Provides(type=SET) Foo provideAFoo() { return AFoo(); } 
Run Code Online (Sandbox Code Playgroud)

......其他模块或同一模块......

@Provides(type=SET) Foo provideBFoo() { return BFoo(); } 
Run Code Online (Sandbox Code Playgroud)

......以及其他地方......

class Bar { 
    @Inject Set<Foo> allMyFoos; 
} 
Run Code Online (Sandbox Code Playgroud)

REF:在dagger的google小组中发帖