文字列を介して動的な 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 プロキシ メソッドを作成せずにこれを実装する方法は他にも考えられます。サーバーは個々のウィジェットと直接通信回線を持っていたので、これはいいと思いました。複数のダッシュボード/ブラウザーからアクセスできますが、上記の 1 回の呼び出しですべて更新されます。
代わりに、すべてのウィジェットとそれらに情報を送信する方法を知っている JavaScript クライアント側コードで他のオブジェクトを呼び出すことで、これを実装できます。これは SignalR のハブ アーキテクチャに反するものであり、これを行うことで車輪を再発明しているように感じました。
より良い設計アプローチについて考えている人はいますか? 助けてくれてありがとう、そしてこの議論を引き起こしたあなたのコメントServyに感謝します。
また、この質問は重複していません。もう 1 つの質問は、Paul が以下でコメントしたような動的オブジェクトに関するものではありません。