我们有一个现有的WCF服务,其中使用了几个DataContracts。我们想要根据设备修改序列化,因此当从移动设备访问时,服务应该只序列化一些重要的数据成员(而不是全部)。
这里有两个选项:
1.为不同类型的设备创建单独的操作和数据协定。 2.深入实际的xml序列化,并基于设备禁止创建不必要的元素。
我们不想选择第一种选项,因为它会在未来引入大量冗余代码问题。
研究表明,我们需要使用IXmlSerializable并覆盖readXML()和writeXML()方法。但与此同时,我在某个地方看到过DataContract和IXmlSerializable不应该一起使用。
非常感谢任何关于如何深入实际序列化的示例。
这里有两个选项:
1.为不同类型的设备创建单独的操作和数据协定。 2.深入实际的xml序列化,并基于设备禁止创建不必要的元素。
我们不想选择第一种选项,因为它会在未来引入大量冗余代码问题。
研究表明,我们需要使用IXmlSerializable并覆盖readXML()和writeXML()方法。但与此同时,我在某个地方看到过DataContract和IXmlSerializable不应该一起使用。
非常感谢任何关于如何深入实际序列化的示例。
[DataContract]
public class TokenMessage
{
string tokenValue;
string extraValue;
[DataMember]
public string Token
{
get { return tokenValue; }
set { tokenValue = value; }
}
[DataMember]
public string Extra
{
get { return extraValue; }
set { extraValue = value; }
}
}
现在当我从移动设备访问返回典型TokenMessage数据协定的服务时,我不希望"Extra"数据成员被序列化,即当我向操作协定提供不同参数时,它应该能够序列化一些/所有数据成员(取决于操作)。请注意,暂时忽略设备检测部分。假设我们在操作协定中有一个参数,可以帮助我们识别设备。