我有这样的数据合同
[DataContract]
class MyDC
{
[DataMember]
public string DM1;
[DataMember]
public string DM2;
[DataMember]
public string DM3;
}
and 有时我想防止 DM2 在从 OperationContract 返回时被反序列化。像这样的东西:
[OperationContact]
public MyDC GetMyDC()
{
MyDC mdc = new MyDC();
if (condition)
{
// Code to prevent DM2 from being deserialized
}
return mdc;
}
我总是可以创建一个仅包含 DM1 和 DM3 的新 DataContract,并从 MyDC 实例生成它,但我想看看是否可以以编程方式删除 DM2。是否可以?如何?
执行此操作的一种方法是将 DataMemberAttribute 的 EmitDefaultValue 属性设置为 false:
[DataContract]
class MyDC
{
[DataMember]
public string DM1;
[DataMember(EmitDefaultValue = false)]
public string DM2;
[DataMember]
public string DM3;
}
然后将此属性设置为 null:
[OperationContact]
public MyDC GetMyDC()
{
MyDC mdc = new MyDC();
if (condition)
{
// Code to prevent DM2 from being deserialized
mdc.DM2 = null;
}
return mdc;
}
这样,该属性就不会在序列化时写入输出流。
http://msdn.microsoft.com/en-us/library/aa347792.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)