具有 MVC 模式依赖关系问题的四层体系结构,导致编译错误
本文关键字:体系结构 四层 错误 编译 依赖 模式 MVC 关系 问题 具有 | 更新日期: 2023-09-27 17:56:54
我有一个网站,它使用四层架构和MVC模式。
在Visual Studio中,我有一个包含4个项目的解决方案:
- 制药.MVC
- 制药服务有限公司
- 制药业务
- 制药基础设施
以下是每个项目如何引用另一个项目:
- Pharma.MVC引用了Pharma.Service。
- Pharma.Service引用了Pharma.Business。
- Pharma.Business 引用了 Pharma.Infrastructure。
在Pharma.MVC项目中,我有一个这样的控制器:
public class HomeController : Controller
{
private IHomeService _service;
public HomeController(IHomeService service)
: base()
{
_service = service;
}
public override ActionResult Index()
{
HomeIndexViewModel viewModel = new HomeIndexViewModel
{
viewModel.NewsArticles = _service.GetLatestNewsArticles()
};
return View(viewModel);
}
}
在同一项目中,HomeIndexViewModel 如下所示:
public class HomeIndexViewModel
{
public IEnumerable<NewsArticle> NewsArticles { get; set; }
}
在Pharma.Service项目中,我有这样的服务:
public class HomeService : IHomeService
{
private INewsRepository _newsRepository;
public HomeService(INewsRepository newsRepository)
{
_newsRepository = newsRepository;
}
public IEnumerable<NewsArticle> GetLatestNewsArticles()
{
return _newsRepository.Find(newsArticle => newsArticle.DatePublished.Date > DateTime.Today).ToList();
}
}
在Pharma.Business项目中,我有一个这样的模型:
public class NewsArticle
{
public int NewsArticleId { get; set; }
public string Title { get; set; }
public string Strapline { get; set; }
public string Summary { get; set; }
public string Story { get; set; }
public DateTime DatePublished { get; set; }
}
我一直在阅读大量有关四层架构的书籍,这是我用来作为将这个解决方案组合在一起的参考。
但是在Visual Studio中,我在尝试构建时不断收到以下错误:
类型"Pharma.Business.Entities.NewsArticle"在 未引用的程序集。必须添加对程序集的引用 "制药业务"
有人可以就我出错的地方提供一些帮助以摆脱此错误吗?
如果要
在代码中使用类型(IEnumerable<NewsArticle> NewsArticles
在HomeIndexViewModel
中),则必须引用该类型(NewsArticle
)所在的程序集。
因此,您必须在 Pharma.MVC
中添加对Pharma.Business
的引用。
如果您不希望这样做,则必须在两者之间添加另一个图层:从服务图层返回的数据传输对象。然后在服务层中,从业务层映射到这些服务 DTO。