【发布时间】:2015-07-14 09:21:10
【问题描述】:
我得到了一个工作良好的 XMLSerializer,用于包含许多不同元素的复杂 3D 模型列表。现在我想序列化除此之外的另一个列表,即只保存它的几个元素。 我只是试图用 [XMLIgnore] 来禁止其中一些,但这会导致我的其他列表的反序列化出现问题。
这是我的 (De)Serializer 的代码:
public void SerializeObject<T>(T serializableObject, string fileName)
{
if (serializableObject == null) return;
var serializer = new XmlSerializer(serializableObject.GetType());
using (var stream = File.Open(fileName, FileMode.Create))
{
serializer.Serialize(stream, serializableObject);
}
}
public T DeserializeObject<T>(string fileName)
{
if (string.IsNullOrEmpty(fileName)) return default(T);
var serializer = new XmlSerializer(typeof(T),overrides);
using (var stream = File.Open(fileName, FileMode.Open))
{
return (T)serializer.Deserialize(stream);
}
}
也许克隆我的列表,并在序列化之前删除我不想保存的所有元素?
【问题讨论】:
-
“也许是克隆我的列表,并在序列化之前删除我不想保存的所有元素的想法?”是的,你应该这样做,绝对同意
-
-
创建第二个继承第一个类的类。然后覆盖您要忽略的对象并将 XmlIgnore 标记添加到这些项目。
标签: c# serialization xmlserializer