在 SignalR 中,HubConnectionContext 中定义了公共属性,如下所示:
public dynamic All { get; set; }
这使得用户可以像这样调用它:All.someMethodName();
这太棒了。
我现在想在我的函数中使用传入参数来调用它。我怎样才能做到这一点?
如:All.<my variable as method name>();
有什么办法可以做到这一点吗?
Thanks
EDIT例子:
public void AcceptSignal(string methodToCall, string msg)
{
Clients.All.someMethod(msg); // THIS WORKS
Clients.All.<methodToCall>(msg); // THIS DOES NOT WORK (But I would like it to!)
}
虽然我喜欢所有有趣的反射答案,但有一种更简单、更快捷的方法可以使用字符串作为方法名称来调用客户端中心方法。
Clients.All
, Clients.Others
, Clients.Caller
, Clients.AllExcept(connectionIds)
, Clients.Group(groupName)
, Clients.OthersInGrouop(groupName)
, and Clients.Client(connectionId)
都是动态对象,但它们也都实现了客户端代理界面。
您可以将这些动态对象中的任何一个转换为IClientProxy
,然后调用调用(方法名、参数...):
public void AcceptSignal(string methodToCall, string msg)
{
IClientProxy proxy = Clients.All;
proxy.Invoke(methodToCall, msg);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)