Skip to content

Instantly share code, notes, and snippets.

View frostyshadows's full-sized avatar
馃

Sherry Yuan frostyshadows

馃
View GitHub Profile
methods fields package/class name
...
39 7 com.sherryyuan.diexamples.dagger
29 8 com.sherryyuan.diexamples.kodein
19 8 com.sherryyuan.diexamples.koin
202 54 dagger
94 23 dagger.android
2 0 dagger.android.internal
96 31 dagger.internal
4 0 dagger.multibindings
@Provides
// provides a Door
fun provideDoor(): Door = SlidingDoorImpl()
@Provides
// provides a SlidingDoorImpl, not a plain Door!
fun provideDoor() = SlidingDoorImpl()
@Module
class TestDaggerModule {
@Provides
fun providesHouse(door: Door): DaggerHouse = mock()
@Provides
fun providesDoor() : Door = DoorImpl()
}
class MainApplication : Application(), KoinComponent, KodeinAware {
override val kodein = Kodein {
import(kodeinModule)
}
@Inject
lateinit var daggerHouse: DaggerHouse
val koinStreet by inject<KoinStreet>()
class MainApplication : Application(), KodeinAware {
override val kodein = Kodein {
import(kodeinModule)
}
val kodeinHouse by instance<KodeinHouse>()
override fun onCreate() {
super.onCreate()
val kodeinModule = Kodein.Module(name = "kodeinModule") {
bind<KodeinHouse>() with provider { KodeinHouse() }
bind<Door>() with provider { DoorImpl() }
}
class KodeinHouse : KodeinAware {
override val kodein = Kodein {
import(kodeinModule)
}
val door by instance<Door>()
}
class MainApplication : KoinComponent {
val koinHouse by inject<KoinHouse>()
override fun onCreate() {
super.onCreate()
startKoin {
modules(koinModule)
}
val koinModule = module {
factory { KoinHouse() }
factory { DoorImpl() as Door }
}
class KoinHouse : KoinComponent {
val door by inject<Door>()
}