是否可以使用 DataMember 覆盖序列化的 属性 值

Is it possible to use DataMember to overwrite serialized property value

我一直在尝试序列化对象,我想知道您是否可以使用 DataMember 属性根据条件覆盖序列化值?例如,如果我在 class:

上有这个 属性
[DataMember]
public string Foo { get; set; }

并且我创建了 class 的一个实例,其中 Foo 设置为 IsFoo,我是否可以使用 DataMember 属性对其进行序列化变成这样的东西:

<Foo>Bar</Foo>

请注意,这是一个假设性问题,在现实生活中这肯定是不好的做法或数据问题,但这有可能吗?

你不能那样做。

[DataMember] 属性只告诉 WCF DataContractSerializer 将该值(在 属性 中)包含在 WCF 消息中 - 它不允许您更改过程中的值....

如果您需要在 WCF 消息中包含 Bar,那么您必须在您的代码中设置 Foo = "Bar"; ...