シリアライゼーションをデバッグする簡単な方法があるとは思いませんが、実際には魔法はありません。シリアライゼーションは非常に単純なプロセスであり、自分で行うことができます。
記録のために、私は DataContract Serializer を使用しています。
シリアル化/逆シリアル化するコードは次のとおりです
public static string Serialize(object obj) {
using(MemoryStream memoryStream = new MemoryStream())
using(StreamReader reader = new StreamReader(memoryStream)) {
DataContractSerializer serializer = new DataContractSerializer(obj.GetType());
serializer.WriteObject(memoryStream, obj);
memoryStream.Position = 0;
return reader.ReadToEnd();
}
}
public static object Deserialize(string xml, Type toType) {
using(Stream stream = new MemoryStream()) {
byte[] data = System.Text.Encoding.UTF8.GetBytes(xml);
stream.Write(data, 0, data.Length);
stream.Position = 0;
DataContractSerializer deserializer = new DataContractSerializer(toType);
return deserializer.ReadObject(stream);
}
}
一部のプロパティが欠落している場合があります
基本的に、シリアライゼーション プロセス中に何か問題が発生した場合、シリアライザーは SerializationException を (詳細と共に) スローします。あなたの場合(プロパティがまだ空であるか、デフォルトと等しい)、いくつかの属性を忘れているように聞こえます。
まあ、コードなしでもう少し手助けするのは簡単ではありませんが、datacontractserializer の機能に注意してください (こちらを参照)。
特に、ネットワーク上でカスタム オブジェクトのリストを送信する場合。常に単一のオブジェクトの値を返します。
それを再現して、そのための単体テストを作成してみてください。ランダムなエラーはありませんが、エラーにつながる非常に特殊なシナリオのみです。