トピックをうまく検索できたかどうかはわかりませんが、質問に対する答えが見つからないようです。私の理解に基づくと、OnionArchitectureのUIとインフラストラクチャは同じレイヤーにあります。ASP.NET MVCプロジェクトにUIがあり、インフラストラクチャであるDALプロジェクトがあるとします。私のコードが以下のようなものであると仮定しましょう:
芯:
//IOrderSaverインターフェースもコアで定義されました
public class OrderService
{
private IOrderSaver orderSaver;
public OrderService(IOrderSaver orderSaver)
{
this.orderSaver = orderSaver;
}
public void AcceptOrder(Order order)
{
orderSaver.SaveOrder(order);
}
}
インフラストラクチャ(DAL):
public class OrderSaverDAL : IOrderSaver
{
//implementation goes here
}
ここで、UI(ASP.NET MVC)で、OrderServiceクラスをインスタンス化して、注文を受け入れることができるようにします。UIがそれを行うには、IOrderSaverをコンストラクターに渡す必要があります。OrderSaverDALを渡す必要があります。
質問:
UI(ASP.NET MVC)はOrderSaverDALを参照する必要がありますか?オニオンアーキテクチャの私の理解から(私がそれを正しく理解している場合)、UIはDALへの参照を持っていないはずです。誰か説明してもらえますか?
ASP.NET MVCプロジェクトからOrderSaverDALを参照する必要がない場合、ASP.NET MVC内でOrderServiceを構築するにはどうすればよいですか?これを実現する方法のサンプルコードを提供して、私を導いていただけますか?
助けてくれてありがとう!