Код: Выделить всё
class AppConfig @Inject constructor() {
val configBaseURL1 : String = "baseURL1"
val configBaseURL2 : String = "baseURL2"
val configAppVer : String = "1.0.0"
}
Код: Выделить всё
@Module
class RetrofitModule {
@Provides
fun getRetrofit(appConfig: AppConfig, okHttpClient: OkHttpClient, moshiConverterFactory: MoshiConverterFactory) : MyRetrofitService {
return Retrofit.Builder()
.baseUrl(appConfig.configBaseURL1)
.client(okHttpClient)
.addConverterFactory(moshiConverterFactory)
.build()
.create(MyRetrofitService::class.java)
}
}
Сначала это работало нормально, потому что я запускал варианты сборки, которые предоставляли разные строки configBaseURL, но теперь я не нужно делать этого в пользу класса appConfig, который содержит две строки URL-адреса, и мне нужно использовать любую строку на основе логического флага во время выполнения приложения. Как я могу это сделать, если RetrofitModule и связанные с ним вставленные параметры создаются во время компиляции? Я попытался инкапсулировать логическое значение в класс @AssistedInject с помощью фабрики @AssistedFactory, но получаю такие ошибки, как:
Код: Выделить всё
Dagger does not support providing @AssistedInject types.
Подробнее здесь: https://stackoverflow.com/questions/783 ... to-a-provi