Можно сделать так, но остается проблема, связанная с тем, что мы не знаем какие зависимости вообще есть в графе. То есть например у нас есть модуль Core и основной модуль App. В таком варианте мы не знаем, какие классы из Core мы можем использовать в App, либо вручную проверять, либо уже в рантайме ловить падения, если какого-то класса нет в графе.
Используя ключи мы можем заранее узнать, какие классы нам доступы, имея вот такой объект:
object CoreKoinKeys {
val DEPENDENCY_1 by koinKey<Dependency1>()
...
val DEPENDENCY_N by koinKey<DependencyN>()
}
Тогда у нас появляется следующее: мы при работе с графом видим не только какая зависимость используется в классе, но из какого модуля она поставляется.
Конечно, мы не избавились от проблемы отсутствия объявленного класса в графе, приложение спокойно соберется, если будет только ключ. К сожалению, у нас не получилось придумать как можно в нашем варианте исправить этот момент, тут уже проблема самой архитектуры коина.
Можно сделать так, но остается проблема, связанная с тем, что мы не знаем какие зависимости вообще есть в графе. То есть например у нас есть модуль Core и основной модуль App. В таком варианте мы не знаем, какие классы из Core мы можем использовать в App, либо вручную проверять, либо уже в рантайме ловить падения, если какого-то класса нет в графе.
Используя ключи мы можем заранее узнать, какие классы нам доступы, имея вот такой объект:
Тогда у нас появляется следующее: мы при работе с графом видим не только какая зависимость используется в классе, но из какого модуля она поставляется.
Конечно, мы не избавились от проблемы отсутствия объявленного класса в графе, приложение спокойно соберется, если будет только ключ. К сожалению, у нас не получилось придумать как можно в нашем варианте исправить этот момент, тут уже проблема самой архитектуры коина.