gpt4 book ai didi

c# - 在 ConfigureServices() 中添加 AddMvc() 服务两次是 Asp.Net Core 中的一个好习惯吗?

转载 作者:行者123 更新时间:2023-11-30 21:28:51 24 4
gpt4 key购买 nike

我正在为 Asp.Net Core 创建一个 Nuget 包。我想让配置变得简单。因此,我决定提供一种流畅的方法,将我的 Nuget 添加到 Asp.Net Core 中 ConfigureServices() 的服务集合中。

这是我打算做的:

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(options => options....);

services.AddMyNugetPackageName();
}

在我的 AddMyNugetPackageName() 方法中,

public static IServiceCollection AddMyNugetPackageName(this IServiceCollection services)
{
services
.AddMvc(options => options.ModelBinderProviders.Insert(0, new MyModelBinderProvider()))
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

return services;
}

现在如果人们开始使用我的 Nuget 包,我的 AddMyNugetPackageName() 中的 AddMvc() 是否会替换 AddMvc()他们的ConfigureServices()?会不会给终端用户带来麻烦?

如果这将替换用户在他们的 ConfigureServices() 中的 AddMvc() 那么什么是最好的方法或如何处理这个问题?

最佳答案

您可以使用 IConfigureOptions 模式从您的 nuget 包中注入(inject)一个 MvcOptions 配置

public class MyConfigureOptions : IConfigureOptions<MvcOptions>
{
public void Configure(MvcOptions options)
{
options.ModelBinderProviders.Insert(0,new MyModelBinderProvider());
}
}

使用ConfigureOptions 注册您的选项

public static IServiceCollection AddMyNugetPackageName(this IServiceCollection services)
{
services.ConfigureOptions<MyConfigureOptions>();
}

将您的 nuget 服务添加到服务集合

services.AddMvc();
services.AddMyNugetPackageName();

关于c# - 在 ConfigureServices() 中添加 AddMvc() 服务两次是 Asp.Net Core 中的一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55990151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com