2013-10-28 12 views
12

Czy istnieje jakiś sposób, żeby zrobić coś takiego w SignalR:Jak mogę wywołać dynamicznie wybraną metodę klienta SignalR z IHubContext?

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); 
} 

Powyższy przykład ilustruje intencję, zamiast rzeczywistego mechanizmu - Chcę, aby określić sposób, aby zadzwonić w czasie wykonywania, a nie kompilacji.

Odpowiedz

25

Można to zrobić:

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

    proxy.Invoke(methodName, data); 
} 
+0

niesamowite, dzięki –

+1

Nie powinny być stosowane metody nazwa bez cudzysłowów? Obecnie wszystkie metody są nazywane "methodName" –

+0

Omg! Szukałem tego przez tak długo! :) Dzięki!! – aup

Powiązane problemy