0

HTTP Web リクエストから受信したストリーム ボディをレスポンスとしてデシリアライズしたいのですが、特定のタイプとしてデシリアライズを行う必要がある場合に問題があります。私には複数の Get があり、それらは異なる応答を持っています (1 つはタイプ p を返し、もう 1 つはタイプ q を返します)。任意の型を逆シリアル化し、型カーストが必要な値を返すときに一般化されたものを返す一般化されたメソッドが必要です。

4

1 に答える 1

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 );
}

これを汎用メソッドに変換するのも簡単です。

于 2012-05-15T21:06:39.110 に答える