Как внедрить IStringLocalizer в IApplicationModelConvention? - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть пользовательское соглашение, которое требует локализованных строк внутри него.AFAIK единственный способ создания экземпляра IStringLocalizer - это DependencyInjection.

Как я могу использовать IStringLocalizer внутри моей CustomConvention?

Соглашение зарегистрировано так:

public void ConfigureServices(IServiceCollection services)
{
     //First I register the localization settings
     services.AddLocalization(o =>
     {
        o.ResourcesPath = "Resources";
     });

      services.AddMvc(options =>
      {
           //My custom convention, I would need to inject an IStringLocalizer  
           //into constructor here, but I can' instantiate it
           options.Conventions.Add(new LocalizationRouteConvention());
      })
}

1 Ответ

0 голосов
/ 21 декабря 2018

Решение, которое у меня было, не очень красивое.

Вы можете сделать что-то подобное, собрать поставщика услуг, чтобы получить экземпляр StringLocalizer.

public void ConfigureServices(IServiceCollection services)
{
     //First I register the localization settings
     services.AddLocalization(o =>
     {
        o.ResourcesPath = "Resources";
     });

     var stringLocalizer = services.BuildServiceProvider().GetService<IStringLocalizer<Resource>>();

     services.AddMvc(options =>
     {
          //My custom convention, I would need to inject an IStringLocalizer  
          //into constructor here, but I can' instantiate it
          options.Conventions.Add(new LocalizationRouteConvention(stringLocalizer));
     })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...