Kotlin+Dagger2 Module provider方法使用中的@Named注解
Kotlin+Dagger2 @Named annotation in Module provider method usage
我在 Kotlin 中使用 Dagger 2 @Named 注释时遇到问题,这使我无法将 Dagger 图迁移到 Kotlin。当我需要在 Dagger 模块方法中注入一个 @Named 参数时,就会出现问题。在这种情况下,我不会通过构造函数或字段注入它。我已经尝试了所有 Kotlin annotation use-sites targets 和 none 似乎在方法参数中工作。请,任何解决方案将不胜感激。以下是 java 代码中一旦转换为 Kotlin 就无法编译的部分:
@Module
public final class MyModule {
(...)
@Provides
@Singleton
LoginStore provideLoginStore(@Named("main_dao_session") DaoSession mainDaoSession, @Named("demo_dao_session") DaoSession demoDaoSession) {
return new LoginStoreImpl(mainDaoSession, demoDaoSession);
}
(...)
}
use-site 目标不适用于这种情况,因为您正在处理函数参数。 target需要用constructors指定,因为每个constructor参数都会在后台生成很多代码
只需像往常一样使用注释:
@Provides
@Singleton
fun provideLoginStore(@Named("main_dao_session") mainDaoSession: DaoSession, @Named("demo_dao_session") demoDaoSession: DaoSession): LoginStore {
return LoginStoreImpl(mainDaoSession, demoDaoSession)
}
我在 Kotlin 中使用 Dagger 2 @Named 注释时遇到问题,这使我无法将 Dagger 图迁移到 Kotlin。当我需要在 Dagger 模块方法中注入一个 @Named 参数时,就会出现问题。在这种情况下,我不会通过构造函数或字段注入它。我已经尝试了所有 Kotlin annotation use-sites targets 和 none 似乎在方法参数中工作。请,任何解决方案将不胜感激。以下是 java 代码中一旦转换为 Kotlin 就无法编译的部分:
@Module
public final class MyModule {
(...)
@Provides
@Singleton
LoginStore provideLoginStore(@Named("main_dao_session") DaoSession mainDaoSession, @Named("demo_dao_session") DaoSession demoDaoSession) {
return new LoginStoreImpl(mainDaoSession, demoDaoSession);
}
(...)
}
use-site 目标不适用于这种情况,因为您正在处理函数参数。 target需要用constructors指定,因为每个constructor参数都会在后台生成很多代码
只需像往常一样使用注释:
@Provides
@Singleton
fun provideLoginStore(@Named("main_dao_session") mainDaoSession: DaoSession, @Named("demo_dao_session") demoDaoSession: DaoSession): LoginStore {
return LoginStoreImpl(mainDaoSession, demoDaoSession)
}