Внедрение зависимостей ASPNET CORE в класс атрибута - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь разработать атрибут DisplayName с интерфейсом для службы локализации, который уже зарегистрирован при запуске и работает, если внедрен в конструктор.

Как получить экземпляр службы локализации для создания экземпляратак как я не могу использовать инъекцию конструкции?

Это мой код

public class MyDisplayNameAttribute : System.ComponentModel.DisplayNameAttribute
{
    private string _resourceValue = string.Empty;
    private ILocalizationService _localizationService;
    public MyDisplayNameAttribute(string resourceKey)
       : base(resourceKey)
    {
        ResourceKey = resourceKey;
    }

    public string ResourceKey { get; set; }

    public override string DisplayName
    {
        get
        {
            _resourceValue = _localizationService.GetLocaleString(ResourceKey);

            return _resourceValue;
        }
    }

    public string Name
    {
        get { return nameof(MyDisplayNameAttribute); }
    }
}

Спасибо

1 Ответ

0 голосов
/ 06 марта 2019

Внедрение зависимостей работает с инверсией управления (https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2). Таким образом, фреймворк контролирует ваше приложение, и при создании экземпляров вашего класса вставляет зависимости, запрошенные через конструктор.

См. Также здесь Как создать класс без параметра конструктора с внедрением зависимости

Так что я подозреваю, что невозможно внедрить зависимость без использования конструктора.

Может быть, если вы опишите свое намерение, может быть другое хорошее решение.

...