Koin
Koin (Passing Parameters - Injected Parameters)
hik14
2022. 7. 28. 18:17
모든 definition 에서 injection parameter 를 사용할 수 있습니다.
definition에서 injection하고 사용할 parameter를 정한다.
Passing values to inject
class Presenter(val a : A, val b : B)
val myModule = module {
single { params -> Presenter(a = params.get(), b = params.get()) }
}
parameter는 parametersOf() 함수를 사용하여 definition로 전달됨.
class MyComponent : View, KoinComponent {
val a : A ...
val b : B ...
// inject this as View value
val presenter : Presenter by inject { parametersOf(a, b) }
}
Defining an "injected parameter"
Presenter 클래스를 빌드하려면 view 가 필요하다는 것을 확인했습니다.
injected params 를 검색하는 데 도움이 되도록 params 함수 인수를 사용합니다.
class Presenter(val view : View)
val myModule = module {
single { params -> Presenter(view = params.get()) }
}
비구조화된 선언으로 매개변수 객체를 사용하여 주입된 매개변수를 직접 작성할 수도 있습니다.
class Presenter(val view : View)
val myModule = module {
single { (view : View) -> Presenter(view) }
}
Resolving injected parameters
코인 Graph resolving(모든 definition의 resolving의 메인 트리)를 사용하면 주입되어질 매개변수를 찾을 수도 있습니다.
단순히 get() 함수를 사용
class Presenter(val view : View)
val myModule = module {
single { Presenter(get()) }
}