IServiceCollection 和 IMvcBuilder 之间是啥关系?
Posted
技术标签:
【中文标题】IServiceCollection 和 IMvcBuilder 之间是啥关系?【英文标题】:what is relationship between IServiceCollection and IMvcBuilder?IServiceCollection 和 IMvcBuilder 之间是什么关系? 【发布时间】:2021-01-04 23:36:04 【问题描述】:我正在学习 Asp.NET Core 3.1。
在我们开始项目时注意到了这一点。 它将转到 ConfigureServices 并注入一个服务。
public void ConfigureServices(IServiceCollection services)
services.AddControllersWithViews();
我的问题是为什么服务可以使用这些扩展方法?
我检查了框架。
IServiceCollection 是一个接口。 IMvcBuilder 接口中有一个叫做Services 的属性。
但仍然不明白这种关系是什么。 .NET 如何知道 IServiceCollection 服务可以使用 AddControllersWithViews()、AddMvc()...等扩展方法?
谢谢。
【问题讨论】:
【参考方案1】:IServiceCollection
表示将服务注册到 IoC 容器中的方式。那里的扩展方法是通用的,用于简化其他服务的配置。
扩展方法需要一些东西:
-
带有
this
参数的方法
public static void AddSomething(this IServiceCollection ...)
命名空间导入到包含具有扩展方法的类的命名空间。
IMvcBuilder
恰好是 AddMvc
返回以进一步配置 ASP.NET Core MVC。
【讨论】:
以上是关于IServiceCollection 和 IMvcBuilder 之间是啥关系?的主要内容,如果未能解决你的问题,请参考以下文章
使用 IServiceCollection.AddTransient、IServiceCollection.AddSingleton 和 IServiceCollectionAddScoped 方法的
使用 IServiceCollection.AddTransient、IServiceCollection.AddSingleton 和 IServiceCollectionAddScoped 方法的