Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core mvc MVC6中的依赖关系多层解决方案的应用_Asp.net Core Mvc - Fatal编程技术网

Asp.net core mvc MVC6中的依赖关系多层解决方案的应用

Asp.net core mvc MVC6中的依赖关系多层解决方案的应用,asp.net-core-mvc,Asp.net Core Mvc,我正在开发一个包括数据层、业务层和UI层(MVC6应用程序)的解决方案 MVC应用程序仅适用于业务层的接口。它对服务(业务层的实现)和数据层一无所知。它只引用包含业务层接口的项目 我有一个与依赖性相关的问题。根据我的意见,我必须将所有依赖项(包括存储库和服务)添加到Startup.cs文件中,但MVC6应用程序不得引用存储库或服务 如何在不添加引用的情况下添加所有依赖项?MVC6应用程序必须直接或间接引用您的服务和存储库实现。它不应该做的事情是从Controller组件构造这些实现的实例 换句话

我正在开发一个包括数据层、业务层和UI层(MVC6应用程序)的解决方案

MVC应用程序仅适用于业务层的接口。它对服务(业务层的实现)和数据层一无所知。它只引用包含业务层接口的项目

我有一个与依赖性相关的问题。根据我的意见,我必须将所有依赖项(包括存储库和服务)添加到
Startup.cs
文件中,但MVC6应用程序不得引用存储库或服务


如何在不添加引用的情况下添加所有依赖项?

MVC6应用程序必须直接或间接引用您的服务和存储库实现。它不应该做的事情是从
Controller
组件构造这些实现的实例

换句话说,在Startup.cs中执行此操作是可以的:

public void ConfigureServices(IServiceCollection services) {
  services.AddInstance<IServiceOrRepo, ServiceOrRepoImpl>();
}

但无论哪种方式,在运行时,控制器都必须能够从其引用的程序集之一解析实际的
ServiceOrRepoImpl
实现实例(当然是通过IoC容器)。这意味着MVC项目必须直接或间接引用包含实现的程序集或项目。

我可以在单独的项目
DependencyResolver
中添加所有依赖项并在MVC项目中使用它吗(调用
DependencyResolver
的方法在
Startup.cs
中添加所有依赖项)当然您甚至可以使用DependencyResolver程序集中定义的扩展方法进行注册,如
services.AddApplicationDependencies()
private readonly IServiceOrRepo _serviceOrRepo;

public MyController() {
  this._serviceOrRepo = new ServiceOrRepoImpl();
}