反序列化词典<>使用DataContractSerializer

时间:2016-06-22 08:30:34

标签: c# xmlserializer datacontractserializer

我需要反序列化Dictionary<>在C#中。因为,XmlSerializer不能用于通用的Dictionary类型,我想到了使用DataContractSerializer。我有一个StreamReader,其中数据要被反序列化,但它在使用DataContractSerializer.ReadObject时显示了不匹配的重载参数。 我之前的代码是:

        StreamReader isr = new StreamReader(File.OpenRead(algorithmName + ".conf"));
        configuration.Load(isr);

Load方法定义为:

public void Load(StreamReader isr)
{
    DataContractSerializer dcs = new DataContractSerializer(typeof(the class containing this method));
    XmlDictionaryReader read = XmlDictionaryReader.CreateTextReader(isr, new XmlDictionaryReaderQuotas());
    dcs.ReadObject(isr);

}

Load方法包含在实现Dictionary<>的类中 但由于StreamReader是ReadObject()的参数,因此显示参数不匹配错误。

所以,我将代码修改为:

FileStream isr = File.OpenRead(algorithmName + ".conf");
        configuration.Load(isr);

Load方法为:

public void Load(FileStream isr)
{
    DataContractSerializer dcs = new DataContractSerializer(typeof(the class containing Load method));
    XmlDictionaryReader read = XmlDictionaryReader.CreateTextReader(isr, new XmlDictionaryReaderQuotas());
    dcs.ReadObject(isr);

}

现在没有错误,但我想知道使用DataContractSerializer代替XmlSerializer是否正确。此外,任何有关用文件流替换streamreader的更新都将受到高度赞赏。

0 个答案:

没有答案