Я нашел некоторые темы об этой проблеме, например this и this, но я не могу понять, как я мог реализовать это для своего кода.Deserialize object to itself
У меня есть что-то вроде этого:
public sealed class Party
{
public Party()
{
load();
}
....
public async void Load()
{
string fileName = this.Name + ".xml";
var files = ApplicationData.Current.LocalFolder.GetFilesAsync(Windows.Storage.Search.CommonFileQuery.OrderByName).GetResults();
var file = files.FirstOrDefault(f => f.Name == fileName);
if (file != null)
{
using (var stream = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync(fileName))
{
XmlSerializer serializer = new XmlSerializer(typeof(Party));
Party data = (Party)serializer.Deserialize(stream);
this = data;
}
}
}
}
Это бросает мне «не может присвоить„это“, потому что это только для чтения». Поскольку я читаю файл, и мне нужно его ждать, он должен быть асинхронным, и тогда у меня не может быть класса как возвращаемого типа.
Любые идеи относительно десериализации этого для себя?
Почему бы не обработать этот метод как заводский метод для создания экземпляров 'Party'? – 48klocs
@ 48klocs заводские методы - это что-то новое для меня. хотите заполнить пример, или вы просто рекомендуете google? :) – gubbfett
Вот мой upvote, чтобы удалить этот уродливый '-1'. Это очень важный вопрос, независимо от его невозможности. – RiA