gpt4 book ai didi

c# - 如何使用动态对象将变量用作方法名

转载 作者:太空狗 更新时间:2023-10-29 19:57:12 26 4
gpt4 key购买 nike

在 SignalR 中,HubConnectionContext 中定义了公共(public)属性:

public dynamic All { get; set; }

这使用户可以这样调用它:All.someMethodName();这太棒了。

我现在想在我的函数中使用传入参数来调用它。我该怎么做?

如:All.<my variable as method name>();

有什么办法吗?

谢谢

编辑示例:

    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)Clients.Client(connectionId) 都是动态对象,但它们也全部执行IClientProxy界面。

您可以将这些动态对象中的任何一个转换为 IClientProxy,然后调用 Invoke(methodName, args...) :

public void AcceptSignal(string methodToCall, string msg)
{

IClientProxy proxy = Clients.All;
proxy.Invoke(methodToCall, msg);
}

关于c# - 如何使用动态对象将变量用作方法名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16079813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com