Я работаю с .NET 4.0, VS 2010.
Я пишу файл, подобный этому:
DataContractJsonSerializer btlSerializer = new DataContractJsonSerializer(typeof(BrainTrackList));
FileStream fs = File.OpenWrite(m_fileName);
btlSerializer.WriteObject(fs, trackList);
DataContractJsonSerializer npcemSerializer = new DataContractJsonSerializer(typeof(NPCExistsModelData));
npcemSerializer.WriteObject(fs, npcemData);
fs.Close();
fs.Dispose();
, который дает результат в текстовом файле, который я ожидаю.
Я пытаюсь прочитать это так:
DataContractJsonSerializer btlSerializer = new DataContractJsonSerializer(typeof(BrainTrackList));
BrainTrackList listContainer = (BrainTrackList)btlSerializer.ReadObject(m_stream);
DataContractJsonSerializer npcemSerializer = new DataContractJsonSerializer(typeof(NPCExistsModelData));
NPCExistsModelData npceDataContainer = (NPCExistsModelData)npcemSerializer.ReadObject(m_stream);
, где m_stream - это ранее открытый объект Stream.BtlSerializer возвращает ожидаемый объект без проблем, но затем m_stream.Position устанавливается в конец файла, и я не могу прочитать следующий объект.Я получаю сообщение об ошибке «Ожидается элемент root из пространства имен ...»
Я делаю что-то не так или мне просто нужно создать агрегатный объект для сериализации, который содержит оба объекта?Я проверил документацию MSDN по ReadObject, чтобы увидеть, что он говорит о его влиянии на объект Stream, но на этой странице нет никакой информации о нем.