Свойства [inject] на стороне клиента Blazor всегда возвращают ноль - PullRequest
0 голосов
/ 09 февраля 2020

На бритвенных страницах я использую @inject Blazored.LocalStorage.ISyncLocalStorageService localStorage и работает нормально. Но из не связанных с бритвой классов (служб и помощников) использование

[Inject]
protected Blazored.LocalStorage.ISyncLocalStorageService localStorage { get; set; }

всегда возвращает ноль. Есть ли что-то дополнительное, что нужно, чтобы DI работал в файлах, не относящихся к Razor? Или мне нужно провести sh весь DI через Конструкторы вплоть до уровня UI?

1 Ответ

2 голосов
/ 09 февраля 2020

Следующее основано только на моем собственном опыте, поэтому я могу ошибаться ...

В объектах, не подверженных бритве, работает только инъекция в конструктор. Таким образом, вы не можете определить свойство, аннотированное атрибутом Inject, и ожидать, что оно будет заполнено экземпляром данного объекта. Вместо этого используйте инъекцию конструктора.

Однако с объектами Razor вы можете использовать директиву @inject для внедрения сервисов в компоненты Razor, но вы также можете использовать атрибут Inject со свойствами в определении класса компонентов бритвы (.razor.cs) и в @ блоки кода (.razor).

Надеюсь, это поможет ...

...