Код: Выделить всё
@Module
@InstallIn(SingletonComponent::class)
object StrategyModule {
@Provides
@IntoMap
@TableStrategyKey(IncomeAndExpense::class)
fun provideIncomeAndExpenseStrategy(strategy: IncomeAndExpenseUpdateStrategy): TableUpdateStrategy =
strategy
@Provides
@IntoMap
@TableStrategyKey(PaymentStatus::class)
fun providePaymentStatusStrategy(strategy: PaymentStatusUpdateStrategy): TableUpdateStrategy =
strategy
@Provides
@TableStrategies
fun provideTableStrategiesMap(
strategies: Map
): Map {
return strategies
}
}
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.FUNCTION)
@MapKey
annotation class TableStrategyKey(val value: KClass)
@Qualifier
@Retention(AnnotationRetention.RUNTIME)
annotation class TableStrategies
@HiltViewModel
class TableScreenViewModel @Inject constructor(
@TableStrategies private val strategies: @JvmSuppressWildcards Map
) : ViewModel()
< /code>
Но я получаю следующую ошибку сборки: < /p>
C:\Users\mar\AndroidStudioProjects\HiltStrategyBug\app\build\generated\hilt\component_sources\debug\com\example\hiltstrategybug\HiltStrategyBugApplication_HiltComponents.java:137: error: [Dagger/MissingBinding] java.util.Map> cannot be provided without an @Provides-annotated method.
public abstract static class SingletonC implements HiltStrategyBugApplication_GeneratedInjector,
^
< /code>
Что я делаю не так? Как я могу исправить эту ошибку и получить рукоятку, чтобы правильно внедрить карту стратегий в мою просмотру? Правильно.>
Подробнее здесь: https://stackoverflow.com/questions/795 ... -viewmodel