Добавление службы AddMvc () дважды в ConfigureServices () является хорошей практикой в ​​Asp.Net Core? - PullRequest
0 голосов
/ 05 мая 2019

Я создаю пакет Nuget для Asp.Net Core. Я хочу сделать его простым в настройке. Поэтому я решил дать свободный подход, чтобы добавить свой Nuget в коллекцию сервисов в ConfigureServices() в Asp.Net Core.

Вот что я планирую сделать:

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(), то какой подход лучше или как с этим справиться?

Пожалуйста, помогите мне.

Спасибо

Abdul

1 Ответ

1 голос
/ 07 мая 2019

Вы можете использовать шаблон IConfigureOptions для добавления конфигурации MvcOptions из вашего пакета nuget

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();
...