私はActivity
または他のコンテキストインスタンス(たとえば、Service
)であれば、ダガー2の依存関係が異なります。どちらも同じインターフェイスを参照しますが、その実装は異なります。 Dagger 2を使ってどうすれば整理できますか?コンテキストに基づいて異なる実装で同じDagger 2依存関係を挿入する方法は?
次のように今、私は2つの異なるコンポーネント、それぞれのモジュールとActivityComponent
とContextComponent
にしようとしている:
@ActivityScope
@Subcomponent(
modules = {
ActivityModule.class,
ContextModule.class
})
public interface ActivityComponent {
}
@Module
public class ActivityModule {
@Provides
@MyActivityQualifier
public MyObject provideMyObject() {
}
}
@ContextScope
@Subcomponent(
modules = {
ContextModule.class
})
public interface ContextComponent { }
@Module
public class ContextModule.class {
@Provides
public MyObject provideMyObject() {
}
}
その後、私はActivity
でMyObject
を使用している場合は、私が追加する必要があります修飾子は次のようになります。
@Inject @MyActivityQualifier MyObject myObject;
これは間違っていますが、わかりません。より良い方法がありますか?