Я столкнулся с такой же проблемой, как ваша, так как я хотел обновить некоторые элементы в пользовательском интерфейсе, используя событие.
Изучая методы регистрации службы из официальных документов Microsoft здесь , services.AddSingleton<IMyDep, MyDep>();
был путь к go, поскольку он допускал несколько реализаций.
Все, что мне нужно было сделать, это создать класс с интерфейсом:
public interface INotifierService
{
// In an Interface, its all Public!
delegate void UiChangedEventHandler(object source, EventArgs args);
event UiChangedEventHandler UiChanged; //Handler
}
и другой класс, производный от этого интерфейса:
public class NotifierService:INotifierService
{
public event INotifierService.UiChangedEventHandler UiChanged; //Event from the base Interface
protected virtual void OnUiChanged()
{
UiChanged?.Invoke(this, EventArgs.Empty);
}
}
и зарегистрируйте их в Startup.cs:
services.AddSingleton<Services.INotifierService, Services.NotifierService>();
, и это сработало!
Конечно, не забудьте добавить интерфейс в ваш файл .razor и подписаться на его событие!