也就是说,我希望我的数据采用一种方式 - 输入一个类,但随后防止它在序列化操作期间保存。最好的方法是什么?
问问题
215 次
3 回答
2
最简单的方法是序列化一个Set
正确执行但始终返回一个固定的假值 on的属性Get
。例如,如果该属性被调用Password
,您将创建一个SerializablePassword
符合上述设计的属性,而不是序列化原始属性。
编辑
这是 Ani 的示例,已格式化,但有一处更改:
[XmlIgnore]
public string Password { get; set; }
[XmlElement("Password")]
public string SerializablePassword
{
get { return null; }
set { Password = value; }
}
于 2010-08-09T20:46:25.507 回答
1
于 2010-08-09T20:39:29.357 回答
0
好的,我尝试了这个return null;
建议,但它不起作用;它无法反序列化。但是,这里有一个解决方法:
public List<Program> Programs
{
get
{
System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(true);
for (int i = 0; i < stackTrace.FrameCount; i++)
{
if ("XmlSerializationWriterApplication".Equals(stackTrace.GetFrame(i).GetMethod().ReflectedType.Name))
{
return null;
}
}
return programs;
}
set { programs = value; }
}
虽然性能可能不是很好,但它会检查 StackTrace 以查看谁调用了get
- 如果它是 Serializer/Writer,它什么也不返回。
于 2010-08-10T13:18:22.093 回答