gpt4 book ai didi

wcf - 我可以防止特定数据成员被反序列化吗?

转载 作者:行者123 更新时间:2023-12-04 17:13:21 25 4
gpt4 key购买 nike

我有一个这样的数据契约(Contract)

[DataContract]
class MyDC
{
[DataMember]
public string DM1;

[DataMember]
public string DM2;

[DataMember]
public string DM3;
}

有时我想防止 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

关于wcf - 我可以防止特定数据成员被反序列化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3358548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com