Я ищу способ вызвать метод из другого класса в моем проекте, который затем отправит сообщение всем клиентам, подключенным к mainHub
У меня есть статический метод, в котором я пытаюсь отправить данные всем клиентам, подключенным к mainHub
, который является концентратором SignalR Core
. Однако я могу получить контекст концентратора, поскольку этот метод является статическим, контекст этого концентратора требует ссылки на объект.
В обычном SignalR
я мог использовать
var context = GlobalHost.ConnectionManager.GetHubContext<mainHub>();
Тогда я мог бы назвать это context.Clients.All
. Однако в SignalR Core
этого нет.
public class utils : Controller
{
private readonly IHubContext<mainHub> _hubContext;
public utils(IHubContext<mainHub> hubContext)
{
_hubContext = hubContext;
}
public static void addManagementLog(sstructs.ManageLog mngLog)
{
_hubContext.Clients.All.SendAsync("newManageLog", mngLog);
}
}
Ссылка на объект требуется для нестатического поля, метода или свойства utils._hubContext
Как лучше всего использовать этот контекст концентратора в статическом методе или таким образом, чтобы я мог вызывать этот метод addManagementLog()
из других классов в этом проекте?
IHubContext<mainHub> cntxt = new IHubContext<mainHub>; cntxt.Clients.All.SendAsync("newManageLog", mngLog);
Либо что-то не так с моим синтаксисом, либо я не могу создать статическую переменную IHubContext. Не удается создать экземпляр абстрактного класса или интерфейса IHubContext‹mainHub› - person Brian S   schedule 29.07.2019