HTTP を使用して JSON RPC インターフェイス経由でXBMCと通信するために、C# で .NET ライブラリをコーディングしています。
暫定バージョンをコーディングしてリリースしましたが、すべてが同期的に行われます。次に、 WP7 用の XBMC リモートを構築していた/構築しているため、ライブラリを独自の目的で非同期になるように再コーディングしました。
私は今、新しい非同期ライブラリをリリースしたいと思っていますが、リリースする前にそれがきちんと整頓されていることを確認したいと思っています。
非同期の性質により、ユーザーはリクエストを開始し、デリゲートに一致するコールバック メソッドを提供し、受信したレスポンスを処理します。
私が抱えている問題は、ライブラリ内でリクエストの存続期間中 RequestState オブジェクトを追跡することです。これには、http リクエスト/レスポンスとユーザーコールバックなどがメンバー変数として含まれています。これは、1 つのタイプのオブジェクトのみであれば問題ありません。戻ってきていましたが、ユーザーの呼び出しに応じて、曲のリストや映画のリストなどが返される場合があります.
現時点での私の実装では、単純なオブジェクトである単一のパラメーターを持つ単一のデリゲート ResponseDataRecieved を使用しています。これは私だけが使用しているため、どのメソッドが何を返し、いつ応答を処理するかを知っています。それは本当にです-リスト、リストなど
ただし、サードパーティがこれを行う必要はありません。デリゲート署名には、正しいタイプのオブジェクトが含まれている必要があります。したがって、サードパーティに返すことができるすべてのタイプの応答データに対してデリゲートが必要です-具体的な問題は、これを内部で適切に処理する方法です-それぞれが異なるメンバー変数を持つさまざまな RequestState オブジェクトがたくさんありますか?さまざまな代表のために?それは正しく「感じ」ません。これを優雅かつきれいに行う方法がわかりません。