在C#中序列化对象的一部分

时间:2013-11-17 08:14:41

标签: c# xml serialization

我有一个C#对象,它包含一个大列表(10-100MB)和一些其他属性。我想序列化对象,但我不想序列化列表。有没有简单的方法呢?

谢谢!

2 个答案:

答案 0 :(得分:5)

由于标记为,因此可以像将[XmlIgnore]添加到相应的属性一样简单:

[XmlIgnore]
public List<Foo> Items {get;set;}

然后正常使用XmlSerializer

如果它需要可控(有时是,有时没有),那么另一种方法是添加:

public bool ShouldSerializeItems() {
    // your logic here
}

许多序列化程序都识别此模式,包括XmlSerializer

答案 1 :(得分:0)

如果您的意思是序列化从数据库加载对象,那么我可以推荐NHibernate,您只需标记,您要在列表上启用延迟加载,并且您的对象将返回Items设置为null(如果你仍处于事务中,Items将在尝试访问它之后加载;如果你已经没有事务,你会得到一个nullPointer异常我认为...但是基本上,任何类型的Lazy-loading肯定是一个原则,你应该留意。

编辑错过了标签,对我感到羞耻