Kurz gesagt, ich möchte eine JSONRPC2 API für Unity3d (Mono) auf einem NodeJS Server implementieren.C# Dynamische Signatur für RPC
Ich bin ziemlich neu in C# und ich fühle, dass das, was ich tun möchte, kaum möglich ist.
Derzeit kann ich so etwas tun:
JSONRequest request = new JSONRequest();
JSONNode jsonParams = new JSONNode();
....
request.params = jsonParams;
socket.Send(request.toJSON());
Wie Sie sehen können, um einen Anruf zu einem RPC macht ziemlich ausführlich ist und all dies die Eingabe einige Zeit in Anspruch nimmt.
Was ich möchte, ist haben, so etwas wie dieses:
req = rpc.call('add', 1, 2);
req.success += SuccessCallback
req.error += ErrorCallback
Da C# nicht dynamische Signatur erlaubt, würde ich eine Signatur für jede mögliche Art wie
Antrag definieren müssen call (String-Methode, int a, int b) anfordern Aufruf (String-Methode, string a, int b) ...
Also heute bin ich mit dieser Idee, die Dinge einfacher zu schreiben und ziemlich nah dran machen würde was ich möchte, anstatt pa Wenn ich Parameter verwende, würde ich eine Callback-Methode übergeben, die Parameter erzeugt. Dann würde das Ergebnis serialisiert werden.
rpc.call("add",() => [1, 2])
Aber ich denke, es hilft nicht viel, weil der Delegierte immer noch einen bestimmten Rückgabetyp haben muss, der mich nirgends bringt.
Wie kann ich das tun?
Es klingt genau wie das, was ich suchte. Habe ich recht zu denken, dass es in C/C++ so ziemlich wie eine Ellipse ist? –
@ LoïcFaure-Lacroix Ja, es ist sehr ähnlich, nur mit der Erweiterung in der Lage zu sein, eine Typeinschränkung zu spezifizieren (und es ist ein gewöhnliches C# -Array, anstatt eine spezielle Handhabung zu benötigen). –
Funktioniert gut. Ich könnte meine erste Implementierung von jsonrpc2 beenden. –