我不确定我是否在搜索主题方面做得很好,但我似乎无法找到我的问题的答案。根据我的理解,Onion Architecture 的 UI 和 Infrastructure 在同一层。假设我在 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?根据我对 Onion Architecture 的理解(如果我理解正确的话),UI 应该没有对 DAL 的引用。有人可以解释一下吗?
如果我不需要从我的 ASP.NET MVC 项目中引用 OrderSaverDAL,我将如何在 ASP.NET MVC 中构造 OrderService?您能否通过提供有关如何实现此目的的示例代码来指导我?
非常感谢您的帮助!