IHandleMessages имеет контравариантен параметр TMessage IHandleMessages<in TMessage>
SimpleRetryStrategy Failed интерфейс <TMessage>
это позволяет зарегистрировать в IoC контейнер IHandleMessages<DerivedType>
и иметь реализацию в обработчике: IHandleMessages<BaseType>
. Все в порядке.
Проблема состоит в том, что обертка для сообщений с ошибкой Failed<TMessage>
, где TMessage не является контравариантной. Это делает невозможным иметь реализацию Handler как Handler : IHandleMessages<Failed<Base>>
и регистрации в IoC контейнер .As<IHandleMessages<Failed<DerivedType>>>()
Я думаю, что его разумно иметь Failed<in TMessage>
но не Failed<TMessage>
Что вы думаете?