Мне интересно, почему .NET IoC-контейнеры не поддерживают несколько реализаций для одного интерфейса! Возможно, я ошибаюсь, но, насколько я понял, фреймворки вроде Ninject частично поддерживают эту функцию, используя аннотации (как?). Я не думаю, что другие платформы, такие как Windsor или простой инжектор, имеют простой механизм для поддержки этого сценария.
Есть ли причина, почему это не поддерживается многими фреймворками? AFAIK, одна из самых важных причин использования интерфейсов, заключается в том, чтобы добиться ослабления сцепления. Если рамки, разработанные для улучшения ослабленной связи, не плавно поддерживают несколько реализаций для одного интерфейса, я не понимаю, почему!
P.S. Конечно, я понимаю, что во время выполнения будет проблема с разрешением, и контейнер будет путать, какую реализацию выбрать, но это то, что нужно учитывать в дизайне, не так ли?