Как я могу вызвать динамически выбранный клиентский метод SignalR из IHubContext?

Есть ли способ сделать что-то подобное в SignalR:

public void CallClientMethod(string methodName, MyObject data)
{
    var ctx = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
    ctx.Clients.All.methodName(data);

    // or alternatively
    ctx.Clients.All.CallClientMethod(methodName, data);
}

Приведенный выше пример иллюстрирует намерение, а не фактический механизм - я хочу определить метод для вызова во время выполнения, а не время компиляции.

Ответ 1

Вы можете сделать это:

public void CallClientMethod(string methodName, MyObject data)
{
    var ctx = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
    IClientProxy proxy = ctx.Clients.All;

    proxy.Invoke(methodName, data);
}