我有一个类,其中包含一些集合,我想将此类的实例序列化为XML,而不必将集合初始化为空,并且无需实现IXmlSerializable。 我不在乎它是否创建空元素或根本不创建元素。 只要它可以在每个基于集合的属性上不必初始化集合的情况下正常工作即可。
我查看了所有可以用来装饰属性的XML属性,但没有成功。 这似乎是一个简单的事情,可以有一个元素或根本没有元素。 然后,在反序列化时,它将仅将它们保留为空或完全忽略它们。
以下是一个简单版本的类,用于解决此问题。 使用此类和默认值会导致异常“对象引用未设置为对象的实例”,因为集合为空;
我查看了所有可以用来装饰属性的XML属性,但没有成功。 这似乎是一个简单的事情,可以有一个元素或根本没有元素。 然后,在反序列化时,它将仅将它们保留为空或完全忽略它们。
以下是一个简单版本的类,用于解决此问题。 使用此类和默认值会导致异常“对象引用未设置为对象的实例”,因为集合为空;
public class MyClass
{
public string Name { get; set; }
public bool IsAlive { get; set; }
public List<Car> Cars { get; set; }
public List<Home> Homes { get; set; }
public List<Pet> Pets { get; set; }
public void ToXmlFile(string fileName)
{
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
TextWriter writer = new StreamWriter(fileName);
serializer.Serialize(writer, this);
writer.Close();
}
}
编辑 感谢大家的帮助,问题最终在我的GetHashCode方法中,它没有正确处理null值。一旦我修复了这个问题,一切都好了。我将第一个回答者标记为正确答案。很抱歉造成困扰,但是与大家一起解决问题确实有所帮助。