我正在寻找一种方法将Silverlight对象持久保存到用户的PC上,然后重新补充它们,以便用户完成编辑。
使用DataContractSerializer
进行序列化并坚持到IsolatedStorageFile
可以正常工作。但是,反序列化会导致问题。这是导致失败的代码:
private string _FirstNames = string.Empty;
public string FirstNames
{
get { return _FirstNames; }
set
{
new PersonNameValidator().Validate(value); //<-- BOOM 8(
Set(ref _FirstNames, value, () => this.FirstNames);
}
}
deserialiser调用属性setter,后者又抛出异常并中止反序列化。
我已尝试明确应用DataContract
/ DataMember
/ IgnoreDataMember
属性,但之后它与私有字段的效果不佳:
System.Security.SecurityException 发生消息=“数据合同 类型 'Trident.Model.Journey.JourneyApplication' 无法序列化,因为 成员'_TravellerSavingsAmount'是 不公开。让会员公开 将修复此错误。或者, 你可以把它作为内部,并使用 InternalsVisibleToAttribute属性 在你的程序集上启用 内部成员的序列化 - 有关详细信息,请参阅文档是 意识到这样做是肯定的 安全隐患。“
如何在反序列化期间绕过属性设置器?
我希望我的课程专注于该领域,并且不会因基础设施问题而受到太多污染。
答案 0 :(得分:0)
一些想法: