Ho riscontrato un problema nel comprendere perché il codice seguente non funziona.Problemi con i singleton quando si utilizzano le dipendenze dei componenti
Ho seguito struttura di progetto:
@Component(modules = CCModule.class)
public interface CComponent {
XXX getXXX();
}
dove
@Module
public class CCModule {
@Provides @Singleton
public XXX provide XXX(){
return new XXX();
}
}
e
@Component(dependencies = CComponent.class, modules = AAModule.class)
public interface AComponent {
YYY getYYY();
}
dove
class YYY {
@Inject
public YYY(XXX xxx) {
...
}
}
.210
inizializzo tutto come:
CComponent c_component = Dagger_CComponent.builder().cCModule(new CCModule()).build();
AComponent a_component = Dagger_AComponent.builder()
.cComponent(c_component)
.aAModule(new AAModule())
.build();
Una volta che la compilazione avviene ottengo il seguente errore:
Error:(11, 1) error: com.test.CComponent (unscoped) may not reference scoped bindings: @Provides @Singleton com.test.XXX com.test.CCModule.provideXXX()
Quello che sto puntando è quello di avere un componente ereditare attacchi provenienti da altri componenti per avere la stessi riferimenti a un oggetto (singleton).
@ AlexanderVasiljev Testato sull'ultima istantanea. Funziona bene =). Aggiornato un po 'la mia risposta con l'annotazione personalizzata AScope. Qualcosa non è giusto con il tuo codice. Mostralo. A proposito, parliamo in inglese, questa non è una risorsa russa. –
soluzione pulita signore –