私は、彼らがこのコードを持っているthis記事、読んでいた:逆シリアル化にはキャストが必要ですか?
// Serialization
XmlSerializer s = new XmlSerializer(typeof(ShoppingList));
TextWriter w = new StreamWriter(@"c:\list.xml");
s.Serialize(w, myList);
w.Close();
// Deserialization
ShoppingList newList;
TextReader r = new StreamReader("list.xml");
newList = (ShoppingList)s.Deserialize(r);
キャスト文の最後の行ですが?もしそうなら、それは直列化のパフォーマンスを低下させませんか?
ありがとうございます。私が思った理由は、私のアプリケーションで私の保存ファイルシステムのシリアル化を使用したいが、ファイルに何百万ものオブジェクトが含まれている可能性があるからです。なぜキャストが必要なのか分かりませんか?すなわち、なぜそれはタイプセーフではないのですか? –
@ Joanデシリアライゼーションエンジンは、基になるデータを読み取る前にタイプを認識しないため、キャストが必要です。また、APIはジェネリックより前から存在していたので、typeとしてオブジェクトを返すように強制されました。 – JaredPar
Jaredさん、ありがとうございました。したがって、キャストせずに型を返すシリアライザを使用することは可能ですか? –