私はDictionary
に1つのジェネリックパラメータを持つデリゲート(アクション)を保存したいと思っています。もしそれが可能であれば、コードスメール をダウン/アップキャストすることを避けたいと思います。ディクショナリに異なるパラメータを持つ汎用アクションを保存する方法は?
基本的には、ユーザーが REST APIから何かをリクエストし、正しいResponseオブジェクトをコールバックする、要求/応答コールバックマネージャを実装しています。一言で言えば、ユーザが呼び出すメソッドは、次のようになります。
void GetUser(int id, Action<GetUserResponse> callback);
私はその後、リクエストを送って、私の「コールバックマネージャー」へのコールバックを保存します。サーバ からの応答が来たら(ほとんどjson)、それをGetUserResponse
オブジェクトに解析し、コールバックを起動します。しかし、多くの異なったものがあります 応答オブジェクトが異なる要求と、コールバックマネージャがそれらの優先度を付ける必要があります(他のものもあります) その要求のコールバックを格納するすべての単一要求に対して辞書を持つのではなく、 すべてのコールバック(および一意のID)を格納する1つのDictionaryを持っています。
基本的にはこのような何か:(明らかにそのように動作しません)
Dictionary<GUID,Action<T>> AllCallbacks;
は、「ユーザー側」に何かをキャストしなくても可能ということですか?
応答オブジェクトに共通するものはありますか?それらのすべてに共通するインターフェースを作成できますか?残念なことに、 –
多かれ少なかれ、要求に応じて異なるデータを保持するだけです – zlZimon
保存する必要がある2種類の要求アクションオブジェクトの例を挙げることができますか? –
mrahhal