「DI使うとインタフェース地獄に陥るらしいから使いたくない」と言っていたA氏がインタフェースを使わずにDIで幸せになるまでC#DIDependencyInjection依存性の注入 DIはインタフェース定義しなくても十分実用的だし、むしろそっちの方が本質だよ、という話をします。C#や.NETを使っていますが、それに限らず普遍的な内容です。 インタフェースと実装に分けるとか無理。DIなど不要! 中堅社員のA氏は、「DIっていちいち実装とインタフェース分けないとダメなんでしょ?。さすがにやってられんわ」と言って頑なにDIを導入しようとしません。 DIはテスタビリティと併せて語られることが多かった為か、A氏は「注入するクラスは基本的にインタフェース定義しましょう」という記事ばかりを読んでいたのです。 インタフェースと実装を分けるとは、例えば次のような事です。 services.AddScoped
![「DI使うとインタフェース地獄に陥るらしいから使いたくない」と言っていたA氏がインタフェースを使わずにDIで幸せになるまで - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/44b557005eac3b3c607c91aceb58199aa00a7df1/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUUzJTgwJThDREklRTQlQkQlQkYlRTMlODElODYlRTMlODElQTglRTMlODIlQTQlRTMlODMlQjMlRTMlODIlQkYlRTMlODMlOTUlRTMlODIlQTclRTMlODMlQkMlRTMlODIlQjklRTUlOUMlQjAlRTclOEQlODQlRTMlODElQUIlRTklOTklQTUlRTMlODIlOEIlRTMlODIlODklRTMlODElOTclRTMlODElODQlRTMlODElOEIlRTMlODIlODklRTQlQkQlQkYlRTMlODElODQlRTMlODElOUYlRTMlODElOEYlRTMlODElQUElRTMlODElODQlRTMlODAlOEQlRTMlODElQTglRTglQTglODAlRTMlODElQTMlRTMlODElQTYlRTMlODElODQlRTMlODElOUZBJUU2JUIwJThGJUUzJTgxJThDJUUzJTgyJUE0JUUzJTgzJUIzJUUzJTgyJUJGJUUzJTgzJTk1JUUzJTgyJUE3JUUzJTgzJUJDJUUzJTgyJUI5JUUzJTgyJTkyJUU0JUJEJUJGJUUzJTgyJThGJUUzJTgxJTlBJUUzJTgxJUFCRCVFMiU4MCVBNiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MDM5ZTdlMmYwMjNhMmZiODFkY2ZkZjA2NzBlZTU1MWE%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBqdW4xcyZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ODBmMGZmOWQ3OWU5Y2E3MDY1ZTVjNDM1MjZkMDI4ZGI%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D2a76958585a7044d3556febad930e464)