我需要反序列化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的更新都将受到高度赞赏。