【问题标题】:How to maintain the DataOrder in a wcf response?如何在 wcf 响应中维护 DataOrder?
【发布时间】:2019-07-19 05:46:46
【问题描述】:

https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/data-member-order

我遇到了与链接中提供的示例类似的问题。我希望基类中定义的数据成员默认出现在特定点而不是响应的开头。前 - 斑马应该在鸟之后。是否可以在 WCF 中执行此操作?

我尝试为基类和派生类提供通用排序

【问题讨论】:

  • 你能发布你的代码块吗?因为在给定的示例中,我没有看到任何问题。它按照规则按顺序排序。
  • 是的,正确。我的问题是我不希望 Zebra 排在第一位。 Zebra 排在第一位,因为它是在基类中定义的,所以我想知道 zebra 是否可以在派生类成员(在本例中为猫、狗等)之后出现。
  • 如果您想要自定义序列化,您可以考虑使用 IXmlSerializable::WriteXml。此处提示:developerfusion.com/code/4639/…

标签: c# .net wcf


【解决方案1】:

官方文档中提到,没有办法实现让基类属性排在后面。

• 如果数据协定类型是继承层次结构的一部分,则数据 其基本类型的成员始终排在第一位。

无论我们使用 Data contract 序列化器还是 XML 序列化器(WCF 中的两个序列化器),Order 属性只在同一个类中生效。

public class Product
{
    [XmlElement(Order =20)]
    public int ID { get; set; }

}
public class Fruit : Product
{
    [XmlElement(Order =30)]
    public int FruitID { get; set; }
    [XmlElement(Order =10)]
    public string Name { get; set; }
}

上述 ID 属性在被剥夺类中不起作用。
如果有什么可以帮助的,请随时告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多