Контейнер помогает вам создавать слабосвязанные приложения, но слабосвязанная не означает «никаких жестких ссылок на другие сборки», как вы, похоже, предлагаете.
Интерфейс и класс, который его реализует, могут находиться в одной сборке, в одном и том же пространстве имен, в событии в одном и том же файле .cs, и это не имеет ничего общего со слабой или жесткой связью.
Речь идет о классах, которые используют другие типы в зависимости от абстракций, а не от конкретных реализаций. Тот факт, что ваш регистрационный код имеет знание как абстракции, так и конкретной реализации - это нормально. В конце концов вам нужно иметь некоторую связь.
С точки зрения механики, вы можете упростить регистрацию и не упоминать оба типа каждый раз, и даже не иметь ссылки на другие сборки, используя условные обозначения в некоторых других контейнерах, таких как Windsor (Unity не поддерживает насколько мне известно, регистрация на основе конвенций).
Опять же - это механика, и она не имеет ничего общего со слабой или жесткой связью или причинами использования контейнеров. Это просто упрощает использование контейнера.
НТН