Search code examples
koin

Create singleton object which implements 2 interfaces


single<ObserveLifeCycleState> { Communicator( domain = get(), repositoryMessanger = get() ) }

single<NewMessageListener> { Communicator( domain = get(), repositoryMessanger = get() ) }

As you can see I am instantiating the same 2 objects because it implements both interfaces. But this creates 2 different objects. How can I do it with only one initialization?


Solution

  •  single {
            Communicator(
                domain = get(),
                repositoryMessanger = get()
            )
        }
        single {
            val communicator: Communicator = get()
    
            communicator as NewMessageListener
        }