【问题标题】:Is it possible to use DataMember to overwrite serialized property value是否可以使用 DataMember 覆盖序列化的属性值
【发布时间】:2015-03-21 13:22:20
【问题描述】:

我一直在玩序列化对象,我想知道您是否可以使用DataMember 属性根据条件覆盖序列化值?例如,如果我的班级有这个属性:

[DataMember]
public string Foo { get; set; }

我创建了一个我的类的实例,其中Foo 设置为IsFoo,我是否可以使用DataMember 属性将其序列化为如下内容:

<Foo>Bar</Foo>

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

【问题讨论】:

    标签: c# serialization datamember


    【解决方案1】:

    你不能这样做。

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

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

    【讨论】:

    • 我认为您是对的,期望 DataMember 属性以这种方式运行可能没有多大意义。 ...也感谢您的编辑提示 :-)
    猜你喜欢
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 2015-11-05
    • 2012-02-12
    • 2012-07-03
    相关资源
    最近更新 更多