Как видно, структура этого класса выглядит отлично. Вы правильно используете Constructor Injection и используете статическую структуру классов для передачи инвариантов и отношений . На уровне информации, представленной здесь, я думаю, что единственное, чего не хватает, - это предложения Guard в конструкторе C:
На концептуальном уровне сложнее ответить, является ли это хорошим дизайном. Это зависит от контекста, не предоставленного здесь. Является ли B Service или Entity ? Что является предполагаемым источником Bs?
Как общее практическое правило, мы должны только внедрять Сервисы, но обрабатывать Объекты с помощью Сервисов (таких как Репозитории или Шлюзы или еще много чего), поэтому, если B представляет Сервис, было бы хорошо внедрить его в C. Если он представляет Сущность, тогда она становится подозрительной - если только С не является Сущностью ...
На другой ноте вы можете спросить о каноническом источнике Bs. Если A действительно является контейнером Bs, то вышеприведенное решение является правильным (и идиоматическим кодом Autofac). Если B действительно имеют разное происхождение, разрешение их через A может быть взломом ...