2009-04-07 58 views
0

早在2.0系列化的日子里,我可以创建一个对象的序列化版本,会导致下面的例子:)WCF XML序列化

<transactionMessage messageDate="1/1/2001 11:00PM" messageId="abc123"> 
    <transaction property1="Value" property2="value2" /> 
</transactionMessage> 

我会做这个用Serializable(属性,然后追加XmlElement属性到我的项目。当我使用DataContract /数据成员,虽然属性,我得到的东西看起来是这样的:

<transactionMessage> 
    <messageDate>1/1/2001 11:00PM</messageDate> 
    <messageId>abc123</mesageId> 
    <transaction> 
    <property1>Value</property1> 
    <property2>Valu2</property2> 
    </transaction> 
</transactionMessage> 

通常我不会很在意幕后所生成的XML,但是这个系统将与多个外部客户端进行交互谁已经与另一个系统(基于2.0的序列化风格)交谈,我想保持结构相似,但引入了WCF的增强功能。

我该如何告诉DataMember属性,使其格式更像是第一个带有属性的示例,而不是所有元素的元素?

回答

2

DataContract序列化程序针对速度进行了优化,似乎设计人员决定在XML节点上支持属性不符合其速度要求。

DataContract序列化程序不支持属性 - 如果需要这些属性,请改为使用可敬的XmlSerializer。

Marc

+0

听起来不错。我敢肯定,互动的人会抱怨一点,但他们可以克服它!谢谢您的帮助。 – RubyHaus 2009-04-09 14:35:33

0

我不使用WCF,但试试你messageDate和MESSAGEID属性之前加入

[XmlAttribute]