これはシリアライゼーション全般に関する質問ですが、特に、.NET コードでServiceStack の優れたシリアライザーを使用しています。
デシリアライザーはプロパティに null 参照を設定する必要がありますか? 現在、null 参照を無視し、そのようなフィールドをクラスのデフォルトに従って設定できるようにしているようです。たとえば、次のテストは失敗します。
[TestMethod]
public void Deserialize_WithNullCollection_CollectionIsNull() {
var serializer = new ServiceStack.Text.TypeSerializer<Foo>();
Foo item = new Foo() { Strings = null };
Foo result = serializer.DeserializeFromString(serializer.SerializeToString(item));
Assert.IsNull(result.Strings);
}
public class Foo {
public Foo() {
Strings = new List<string>();
}
public List<string> Strings { get; set; }
}
おそらくこのテストは成功するはずですが、成功しません。item.Foo は null 参照ではなく空のリストです。null 参照は、実際の参照と同じように、オブジェクトの状態の一部であるように思えます。私は正しいですか、それとも間違っていますか?