Кто создал экземпляр? Обычно это владелец и он должен нести ответственность за удаление экземпляра.
Скорее всего, у вас есть "внешний" класс, который создал C и затем передал его, прямо или косвенно, в A и B. Это, вероятно, естественный кандидат, который несет ответственность за жизненный цикл C и должен избавиться от него .
[Редактировать: в ответ на комментарий ОП]
Звучит так, что, может быть, вам стоит еще раз взглянуть на дизайн здесь. Указывает ли это на необходимость проведения рефакторинга?
У вас есть класс C, который нуждается в утилизации, который используется как A, так и B; должен ли у вас быть класс, который несет полную ответственность за сортировку C через A и B вместо того, чтобы они сами создавали C из контейнера DI? Или C действительно больше синглтона. Разве это действительно нужно утилизировать?
Полагаю, все, что я говорю, это то, что это может указывать на дизайн, который нуждается в небольшом изменении; посмотри еще раз с критическим взглядом.