Не совсем понятно, какова цель вашего дизайна. Я использую autofac и имею кеши, которые создаются для каждого запроса, а другие - для одного экземпляра. Обычно запросы должны быть недолговечными, все, что кэшируется для каждого запроса, должно быть моментальным снимком на момент запроса.
Данные, которые мы кешируем для каждого запроса, обычно выполняются во избежание перезагрузки или пересчета данных в рамках одного запроса. Сомнительно, что у вас есть требование очищать кэш, созданный для каждого запроса, еще более сомнительно, что вы хотите очистить эти кеши для всех текущих запросов, я не понимаю, как и почему у вас возникла необходимость в такой функциональности.
Во всяком случае, я думаю, что ответ может быть очень простым. ICacheService также должен быть InstancePerRequest или ICacheCleared должен быть одним экземпляром.
В качестве альтернативы вы должны разбить структуру своих кэшей так, чтобы вы отделяли кэши, созданные для каждого запроса, от кэшей, которые создаются в одном экземпляре. т.е. ICacheService , который имеет коллекцию ICacheCleared и IRequestCacheService , который имеет коллекцию IRequestCacheCleared объектов.
Вы можете внедрить отдельные экземпляры объектов в объекты, созданные для каждого запроса, но не наоборот. Поэтому, если вам нравится, IRequestCacheService можно также внедрить с помощью ICacheService и вызвать ExecuteCacheCleared на ICacheService при ExecuteCacheCleared вызывается на IRequestCacheService .