Tag: kohesive injekt

如何使用Injekt库中generics的injectLazy()委托?

我有一个下面的类层次结构 interface Presenter abstract class MvpFragment : Fragment() { val presenter by injectLazy() // error: Cannot use ‘T’ as reified type parameter. Use a class instead. } 有没有办法使用带有generics的injectLazy委托? 我可以将一个KClass作为parameter passing给MvpFragment ,但我仍然不知道如何使用它来注入一个P对象。

在Kotlin的Injekt库中,如何为每个Android活动创建本地范围?

在Github上的Injekt文档中,它说范围是存在的,但我不清楚如何使用它们为每个Android活动创建一个本地范围,它们有自己的工厂和实例,但也可以使用父范围中的某些范围。 Injektvariables似乎是一个全局范围,我看到InjektScope和InjektScopeMain但没有使用它们的例子,或者它们如何链接到父范围。 我看到的唯一方法是创建单独的InjektScope实例并调用它们,或者将Injekt作为全局范围调用。 这工作,但笨拙。 没有明显的方式来链接,嵌套,委托或inheritance。 这是支持的,如果是的话如何? 注意: 这个问题是由作者故意编写和回答的( 自我回答问题 ),所以对于常见的Injekt + Kotlin主题的习惯性的回答在SO中出现。 其他答案也欢迎,还有其他样式的如何做到这一点! 披露,我是Injekt图书馆的作者。

在Kotlin的Injekt库中,我如何注入函数而不是值?

在Kotlin中使用Injekt库进行dependency injection时: 有时我想注入一个函数,而不是注入一个值。 所以像通过以下方式接收function: val function: (Int) -> Int = Injekt.get() 这似乎工作正常,但不是如果我注册多个函数具有相同的签名,但意义不同。 似乎没有办法区分这些function。 注意: 这个问题是由作者故意编写和回答的( 自我回答问题 ),所以对于常见的Injekt + Kotlin主题的习惯性的回答在SO中出现。 其他答案也欢迎,还有其他样式的如何做到这一点! 披露,我是Injekt图书馆的作者。

如何使用Injekt库中泛型的injectLazy()委托?

我有一个下面的类层次结构 interface Presenter abstract class MvpFragment<P: Presenter> : Fragment() { val presenter by injectLazy<P>() // error: Cannot use 'T' as reified type parameter. Use a class instead. } 有没有办法使用带有泛型的injectLazy委托? 我可以将一个KClass<P>作为参数传递给MvpFragment ,但我仍然不知道如何使用它来注入一个P对象。