我应该将我的情况序列化为列表还是单个对象?

时间:2016-08-29 21:44:30

标签: c# xml serialization

对于更有经验的开发人员,我有一个简短的问题。

我正在使用C#,我处于一种两难境地。

我有一个对象列表,我想将其序列化为xml格式。

为此,我使用了一种我发现有用的方法,如下所示。

public static void WriteToXmlFile<T>(string filePath, T objectToWrite, bool append = false) where T : new()
{
    TextWriter writer = null;
    try
    {
        var serializer = new XmlSerializer(typeof(T));
        writer = new StreamWriter(filePath, append);
        serializer.Serialize(writer, objectToWrite);
    }
    finally
    {
        if (writer != null)
            writer.Close();
    }
}

然后我有一个对象列表(通常几个实例,但可能多达几千个)或多或少包含如下参数:

    2-3 integers
    1-2 DateTimes
    2 bools
    List<string> containing 1-5 short (1 word) strings
    string containing 10-30 characters
    string containing 30-1000 characters
    and maybe few short string more..

然后我想知道是否应该将整个这样的列表序列化为一个xml文件,或者最好将每个对象序列化为单独的文件。我想主要是为了稳定的目的(因为我在计算它不应该达到xml文件的大小限制,但我不确定)和性能(我有点可怕的是,单独的文件会增加所需的时间)。也许还有一些方面需要考虑。

我会感谢一些专家的意见。

我应该遵循哪种方式?

问候!

1 个答案:

答案 0 :(得分:1)

这取决于您将如何使用序列化结果。如果您不单独使用序列化对象并且总是需要整个列表,那么请转到一个文件。否则也可以使用一个文件,但如果在测试期间发现它会导致性能问题,那么检查您的体系结构并使用XMLReader或其他类型的存储(如数据库)是有意义的。