2011-05-06 126 views
0

我有一个对象列表,比如List<Topic>我想序列化它们。我使用XmlSerializer,它工作正常。但是每次它会对整个对象进行序列化和反序列化,那么它会不会影响性能?列表中的项目可能随时被删除,一旦删除,它也应该从Xml中删除。序列化对象列表

这是我当前的序列码: -

XmlSerializer serializer = new XmlSerializer(typeof(List<Topic>)); 
        serializer.Serialize(somestream, topicList); 

反序列化我就简单的写: -

XmlSerializer serializer = new XmlSerializer(typeof(List<Topic>)); 
        topicList = serializer.Deserialize(somestream) as List<Topic>; 

这是技术好,或者我们可以提高性能?该列表通常包含80-100个项目。

感谢提前:)

回答

3

首先,你有没有测试,以确保有性能问题?其次,XmlSerializer不能删除表示已经被移除的项目的XML位,而没有执行完整的序列化以找出已经改变的内容以及如何改变XML。因此,虽然性能可能会或可能不会成本高,具体取决于您的对象,但无法序列化/仅反序列化部分列表,并且只能根据更改的项目对XML进行小的修改。

但是,如果您经常序列化/反序列化,并对列表的某些部分进行更改,那么在您的情况下是否可以使用数据库?

+1

+1,esp对可能使用数据库的评论。我们确实需要知道更广泛的上下文以了解是否需要或可能实现一个对象时序序列化。 – 2011-05-06 04:12:38

+0

自从我制作WP7应用程序以来,没有数据库。但是,既然没有其他办法,我会认为我以正确的方式去做。 – TCM 2011-05-06 15:06:48