HTTPのWebリクエストから受け取ったストリームのボディをレスポンスとして逆シリアル化したい。問題は、特定の型としてデシリアライズを行う必要がある場合です。私は複数のGetを持っていて、彼らは異なった応答を持っています(1つは戻り値の型p、他の戻り値はq)。私は任意の型を逆シリアル化し、型カストが私に必要な値を返すときに一般化された何かを返す一般化されたメソッドを持っていたい。HTTPレスポンスの戻り値の型特定の型への逆シリアル化
0
A
答えて
0
マジックソースは、どのタイプを入力するかを知っています。これを済ませたら、一般的なデシリアライザを作成するのはかなり簡単です:
public object Deserialize(string serialized, Type T) {
if (string.IsNullOrEmpty(serialized)) {
return null;
}
XmlSerializer xs = new XmlSerializer(T);
MemoryStream ms = new MemoryStream(StringToBytes(s) ?? new byte[0]);
XmlTextWriter tw = new XmlTextWriter(ms, Encoding.UTF8);
return xs.Deserialize(ms);
}
これは一般的な方法に変換するのも簡単です。
+0
返される型を見つけるための他の選択肢はありませんでした。だから、私は、HTTPヘッダ( 'ResponseType')を追加してサービス側の応答に返されるオブジェクトの型を追加しました。クライアント側では、私はちょうどレスポンスヘッダをチェックしてそれに応じてデシリアライズしました。 – Rain
関連する問題
- 1. データ型の逆シリアル化ConcurrentBag
- 2. Javaでの列挙型の逆シリアル化
- 3. 派生型のJSON逆シリアル化
- 4. 逆シリアル化のカスタムXMLデータ型は
- 5. jQueryデータ型の戻り値のグループ化
- 6. decltype(オート) - 戻り値の型の推論戻り値の型
- 7. 戻り値の型
- 8. 戻り値の型
- 9. 戻り値の型=
- 10. 戻り値の型
- 11. VS2015 C++コルーチン:promise.get_return_object()戻り値の型とコルーチン戻り値の型
- 12. の定義のOleDbCommand戻り値の型
- 13. パラメータの型 - >戻り値の型
- 14. Haskellの戻り値の型多型
- 15. 列挙型、シングルトンおよび逆シリアル化
- 16. C#クラスへのXMLレスポンス文字列の逆シリアル化
- 17. 逆シリアル化の逆シリアル化
- 18. 戻り値の型(Java)の
- 19. Scalaの戻り値の型
- 20. タスクの戻り値の型
- 21. WEBAPIの戻り値の型
- 22. 戻り値の後にオブジェクトを逆シリアル化するNeo4J
- 23. Json.netは派生型をシリアル化/逆シリアル化しますか?
- 24. 反射設定戻り値の型obj?
- 25. 厳密に型指定されたリポジトリの戻り値の型
- 26. 自己への逆シリアル化
- 27. プロパティの複数の型を持つJSONの逆シリアル化
- 28. Fortran:関数の戻り値の型からの値へのアクセス
- 29. C++ Iterators戻り値の型
- 30. C:ether_aton戻り値の型
私はブロックをキャッチして、それをデシリアライズしようとすることができますが、それは悪いプログラミングpractice.what他のオプションがありますか? – Rain