Я использую приведенный ниже код для открытия zip-архива в памяти.
using (var leagueFile = File.OpenRead(openFileDialog.FileName))
using (var package = new ZipArchive(leagueFile, ZipArchiveMode.Read))
{
foreach (var team in package.Entries)
{
if (team.Name.EndsWith(".xml"))
{
_xmlHandler.Import<Player>(team.FullName, Encoding.UTF8);
//...
}
}
}
Когда я пытаюсь десериализовать с помощью моего Import<T>()
метода, происходит сбой приложения из-за того, что файл не найден.
public T Import<T>(string fileName, Encoding encoding) where T : class, new()
{
var serializer = new XmlSerializer(typeof(T));
serializer.UnknownNode += serializer_UnknownNode;
serializer.UnknownAttribute += serializer_UnknownAttribute;
var reader = XmlReader.Create(new StreamReader(fileName, encoding));
var po = (T)serializer.Deserialize(reader);
return po;
}
Проблема в том, что приложение ищет fileName
в каталоге bin
приложения. Не в stream
(?) Zip-архива. Есть ли способ сделать это с XmlSerializer
классом?