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