我正在为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软件包,我的AddMvc()
中的AddMyNugetPackageName()
会取代他们的AddMvc()
中的CongifureServices()
吗?这会给最终用户带来麻烦吗?
如果这将替换用户AddMvc()
中的ConfigureServices()
,那么最好的方法是什么或如何处理呢?
请帮助我。
谢谢
阿卜杜勒
答案 0 :(得分:1)
您可以使用IConfigureOptions
模式从nuget包中注入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();