我想知道是否可以通过字符串调用动态 c# 对象上的函数。我想做这样的事情:
string lMethodName = "MethodName";
dynamic lDynamicObject = GetDynamicObject();
lDynamicObject.Invoke(lMethodName, lParameters);
任何想法或解决方案将不胜感激。
也许就像 Servy 所说的,有一种更好的方法可以通过不同的设计来实现我们想要的。我们正在使用 SignalR 并有一个仪表板 Web 应用程序。我们希望仪表板中的每个小部件都能够将数据推送到它。为了实现这一点,我们将使用剃须刀代码将小部件 ID 注入到每个单独的小部件 SignalR 客户端代理中。每个小部件都将具有以下内容:
hub.client.updateWidget123456 = aUpdateFunction;
其中 123456 是小部件的 ID。在服务器端 SignalR 集线器代码上,我们可以回调客户端 javascript 函数:
int lWidgetId = 123456;
dynamic lDynamic = Clients.All;
lDynamic.Invoke("updateWidget" + lWidgetId, lParameters);
在不创建 javascript 代理方法的情况下,我可以想到其他方法来实现这一点。我认为这很好,因为服务器与每个单独的小部件都有直接的通信线路。可以从多个仪表板/浏览器访问它们,但它们都将通过上面的单个调用进行更新。
我们可以通过在我们的 javascript 客户端代码中调用其他对象来实现这一点,这些对象知道所有小部件以及如何将信息定向到它们。我觉得这违背了 SignalR 的集线器架构,就像我们这样做是在重新发明轮子。
有人对更好的设计方法有任何想法吗?感谢您的帮助,感谢您的评论 Servy 引发了这次讨论。
另外,这个问题不是重复的。另一个问题与 Paul 在下面评论的动态对象无关。