3 つのレイヤーがあるとします。UI、ビジネス、データ。DIを使用しています。UIからデータレイヤーにアクセスできないようにしたくありません。
問題は、データ層のDI登録についてです。コンポジション ルートは UI にあり、そこでデータを参照したくありません。私はこの答えを見つけました。私が理解しているように、すべてのレイヤーを参照し、それらはレイヤーではなくライブラリであると考える必要があります。このようにして、ビジネスレイヤーがデータレイヤーまたはその他の必要なものを使用するように指定できます。結局のところ、これがDIが存在する理由です。
それは正しいのですが、問題があります。UI でデータ レイヤーを使用しないでください。しかし、ある開発者が誤って UI からデータを参照し、別の開発者がデータ層から何かを UI クラスに直接注入しました。だから彼は、私が望んでいないビジネス層をスキップしました。
このような状況をどのように処理できますか? いくつかの制限を設けたいのですが、一方で DI の柔軟性が必要です。
もちろん、依存関係を登録するためだけに別のライブラリを用意できると考える人もいます。
ここで最も良いパターンは何ですか?