То, что многие программисты, похоже, соблюдают, это Соглашение о конфигурации. В контексте IoC это означает использование API вместо конфигурации XML.
Как вы должны сохранять идею слабой связи за DI / IoC, когда вам нужно ссылаться на DLL, содержащую конкретные реализации абстрактных интерфейсов / классов, чтобы использовать соглашение о конфигурации?