2017-08-08 3 views
3

dotnetコアを使用してWebプロジェクト用のBusinessおよびDataAccessレイヤーを作成しました。 ビジネスレイヤーにデータアクセス参照を追加し、UI(ウェブプロジェクト)レイヤーのビジネスレイヤーを参照しました。ネストされたリファレンスはdotnet core 1からアクセスできます

私のUI(ウェブ)プロジェクトからデータアクセスレイヤーにアクセスできました。私は本当に不思議です、それは任意のアプリケーション設計の違反につながる可能性があります。

誰かがこれを遭遇し、UIからデータアクセスレイヤーへのアクセスを制限する方法があれば、助けてください。

enter image description here

+0

単純な解決策は次のとおりです。ただしないでください。 Dependency Injectionに頼るだけで、あなたはまだそれをやっているとは思わない。 –

+0

MVCチームからの回答 - https://github.com/aspnet/Mvc/issues/6635 –

+0

同じ問題https://stackoverflow.com/questions/46160274/project-references-in-net-core-different-from-以前のネットバージョン私は間違いを避けるためにそれを別にしたいと思っていますが、それは今のものが今働く方法ではないようです。 – Shikyo

答えて

0

はい、間接的な依存関係があまりにも依存関係です。

あなたのトップレベル(MVC)プロジェクトは、すべてのモジュールをロードするために、直接的または間接的にすべてを参照する必要があります。そして、依存性注入をセットアップする。

別のプロジェクトにインターフェイスレイヤーを導入すると、より良い分離を得ることができます。たとえば、IBusinessClassおよびIDataAccessClassです。

メインプロジェクトを除くすべてのプロジェクトで動作しますので、この例題から離れている場合は、コントローラを別のプロジェクトに移動し、IBusinessインターフェイスのみに依存してください。私はそれがMVCの慣習とどのように機能するかはわかりませんが。

+0

依存関係を登録するには、対応する具体クラスをアクセス可能にする必要があります(公開する必要があります)。私たちは依存関係を解決していると言いますが、具体的なクラスと直接的に依存する可能性があります。 –

+0

はい、それは私が「依存性注入を設定する」という意味です。 .CoreのMEFに似たものを見つけたり作成したりすることができたとしても、それを避けることができます。しかし、私は気にしません。 –

関連する問題