Я занимаюсь разработкой приложения, в котором я определил несколько слоев, и использую dagger2 для управления экземплярами и т. Д. У меня есть менеджеры, службы и представления.
Я пытаюсь установить менеджер в @Module, например:
@Module
class ManagerModule {
@Provides
@Singleton
fun provideDatabaseContext(userManager: UserManager) : DatabaseContext {
var databaseContext : DatabaseContext = DatabaseContext();
databaseContext.setUserManager(userManager)
return databaseContext
}
@Provides
@Singleton
fun provideUserManager(store : PersistenceStore<DAOUser>) : UserManager = UserManager(store)
}
где DatabaseContext выглядит следующим образом:
class DatabaseContext : IDatabaseContext {
private lateinit var userManager: IUserManager
override fun getUserManager(): IUserManager {
return userManager;
}
fun setUserManager(userManager: IUserManager){
this.userManager = userManager;
}
}
и когда я вставлял DatabaseContext в мой сервис, как это:
class UserService @Inject constructor(var databaseContext: IDatabaseContext) : IUserService {
override fun addUser(dtoUser: DTOUser, callback: ResponseCallback<Response<Void>>) {
var daoUser : DAOUser = DAOUser(dtoUser.name, dtoUser.email, dtoUser.password)
databaseContext.getUserManager().add(daoUser);
callback.onCompletion(Response<Void>())
}
}
Все работает нормально, кроме getUserManager(), который все время обнуляется, хотя у меня есть метод setUserManager, и я устанавливаю в ManagerModule, как вы можете видеть выше.Любая помощь будет оценена.Спасибо
Вот модуль услуг
@Module
class ServicesModule {
@Provides
@Singleton
fun provideUserService() : UserService = UserService(DatabaseContext())
@Provides
@Singleton
fun provideAuthenticationService() : AuthenticationService = AuthenticationService(FirebaseAuth.getInstance())
}