【发布时间】:2019-06-06 10:37:54
【问题描述】:
我正在学习 ASP.NET Core,看到注册 MVC 服务是这样的:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(options =>
{
options.MaxModelValidationErrors = 100;
});
}
我的问题是,为什么AddMvc 方法需要Action<MvcOptions> 形式的选项?为什么我不能只创建一个MvcOptions 的实例并将其传递给函数?
【问题讨论】:
-
如果在配置服务时提供了在请求管道中执行任何逻辑的灵活性
-
只是描述选项的一种更实用的方式。它在灵活性/支持默认选项/等方面更好。恕我直言,它看起来也更好。
-
为了详细说明 Ehsan 的评论,MVC 管道将配置自己的选项作为其创建和初始化的一部分。传入委托允许您根据 API 的要求在 MVC 的配置之上添加自定义行为,另一种方法是传入
MvcOptions- 复制您的选项,然后让 MVC 配置它自己的,这会很混乱/不必要的。 -
之所以必须由实际开发人员解决,但如果您想深入兔子洞,可以查看源代码github.com/aspnet/AspNetCore/blob/…
标签: c# asp.net-core