【发布时间】:2015-03-19 06:25:05
【问题描述】:
我找到了一些关于这个问题的线程,比如this 和this,但我不知道如何为我的代码实现这个。
我有这样的事情:
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;
}
}
}
}
这让我“无法分配给' this ',因为它是只读的”。由于我读取了一个文件并且需要等待它,因此它必须是异步的,然后我不能将类作为返回类型。
关于如何将其反序列化为自身的任何想法?
【问题讨论】:
-
为什么不将该方法视为工厂方法来生成
Party的实例? -
@48klocs 工厂方法对我来说是新事物。想填写一个例子,或者你只是推荐谷歌? :)
-
这是我删除那个丑陋的'-1'的赞成票。这是一个非常重要的问题,尽管它不可能。
标签: c# .net xaml microsoft-metro