我正在开发一个包括数据层、业务层和UI层(MVC6应用程序)的解决方案。
MVC应用程序只与业务层的接口一起工作。它对服务(业务层的实现)和数据层一无所知。它只引用包含业务层接口的项目。
我有一个与依赖相关的问题。根据我的观点,我必须将所有依赖项(包括存储库和服务)添加到Startup.cs文件中,但MVC6应用程序不能有对存储库或服务的引用。
如何在不添加引用的情况下添加所有依赖项?
发布于 2016-01-07 23:36:28
MVC6应用程序必须直接或间接地引用您的服务和存储库实现。它不应该做的事情是从您的Controller组件构造这些实现的实例。
换句话说,在Startup.cs中这样做是可以的:
public void ConfigureServices(IServiceCollection services) {
services.AddInstance<IServiceOrRepo, ServiceOrRepoImpl>();
}在任何控制器中这样做都是不允许的:
private readonly IServiceOrRepo _serviceOrRepo;
public MyController() {
this._serviceOrRepo = new ServiceOrRepoImpl();
}但无论哪种方式,在运行时,控制器都必须能够从其引用的程序集之一(当然是通过IoC容器)解析实际的ServiceOrRepoImpl实现实例。这意味着包含实现的程序集或项目必须由MVC项目直接或间接引用。
https://stackoverflow.com/questions/34658847
复制相似问题