おそらく、コンテナなしでDIを使用できますか?
コンストラクタインジェクションを使用する例を次に示します。
public static void Main() {
ILogger logger = new FileLogger();
ISession session = new ConcreteSession();
IRepository repository = new MyDataRepositoryImpl(session, logger);
IApplication app = new MyApplication();
app.AddModule(new DataSelector(repository));
app.AddModule(new Editor(repository, new MyEditorFactory(session)));
app.AddModule(new LdapAuthenticator(session, logger));
// ...
app.Run();
}
このようにすると、実行可能モジュールはすべてに依存することになります。そのため、その責任を、物事をつなぎ合わせるだけに限定する必要があります。アプリケーションのコードの大部分を他のモジュールでクリーンに保つことができます。
多くの場合、インジェクションを使用して依存関係を管理するための高度なフレームワークは必要ありません。