У меня есть приложение, которое использует библиотеку jQuery для отображения диалогов «подтверждения».
Когда пользователь нажимает «ОК» или «Отмена» в диалоговом окне, сначала выполняется обратный вызов для моего кода Javascript. Оттуда я вызываю метод Blazor, основываясь на решении, которое принял пользователь.
Все это выглядит примерно так:
Мой код js:
$('.alert-yesno).on('click', function() {
// For simplicity I immediately call the Blazor method
DotNet.invokeMethodAsync('[Assembly name]', 'DoSomething')
.then(data => {
// do something...
});
});
Blazor page:
@inject MyService MyService
<button class="alert-yesno">Show dialog</button>
@code
{
[JSInvokable]
public static async Task DoSomething()
{
// How to use the non static MyService here...?
}
}
Все это прекрасно работает. Часть Javascript вызывает мой метод Blazor. Но как я могу использовать MyService
оттуда? Это вводится в страницу. Это хорошо, потому что он использует внедрение зависимостей.
Я не хочу каждый раз создавать экземпляр new
из метода static
, потому что таким образом я теряю все автоматически внедренные зависимости.
Как я могу решить эту проблему?