也就是说,我希望我的数据采用单向方式 - 输入类,但在序列化操作期间阻止它保存。什么是最好的方法呢?
答案 0 :(得分:2)
最简单的方法是序列化一个正确执行Set
的属性,但始终在Get
上返回一个固定的假值。例如,如果属性被称为Password
,则您将创建一个符合上述设计的SerializablePassword
属性,而不是序列化原始属性。
修改的
这是Ani的样本,格式化,只需更改一次:
[XmlIgnore]
public string Password { get; set; }
[XmlElement("Password")]
public string SerializablePassword
{
get { return null; }
set { Password = value; }
}
答案 1 :(得分:1)
答案 2 :(得分: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,它什么也不返回。