向WCF服务添加XML属性

本文关键字:XML 属性 添加 服务 WCF | 更新日期: 2023-09-27 18:15:43

我有一个这样的类,

[DataContract]
public class FruitCrate
{
  [XmlAttribute]
  public int NumberOfFruits;
  [DataMember(Name = "Cats")]
  public List<Cats2009> Cats;
}
[DataContract]
public class Cats2009
{
    [DataMember]
    public string Name;
}

现在,即使没有猫在水果箱,我仍然希望它返回结果为,

<FruitCrate NumberOfFruits="1">
 <cats MomName="BigBadCat" />
</FruitCrate>

向WCF服务添加XML属性

[DataContract]
public class FruitCrate
{
  [XmlAttribute]
  public int NumberOfFruits;
  [DataMember(Name = "Cats")]
  public CatContainer CatContainer;
}
[DataContract]
public class Cats2009
{
    [DataMember]
    public string Name;
}
[DataContract]
public class CatContainer
{
    [XmlAttribute]
    public string MomName;
    [DataMember]
    public List<Cats2009> Cats;
}

试试这个。我没有太多的经验与XmlAttribute,所以我不太知道它是如何工作的,但这应该做。请注意,您总是必须声明一个CatContainer,但它不必包含任何cat。


我自己做了一些研究,如果你想要xmlatattributes,你不能使用DataContract。您必须实现isserializable或使用. net XmlSerializer。

你也可以添加一个方法并用属性[OnSerialized]/[OnDeserialized]标记它。这将允许您更改"Cats"的内容,如果它为null或空为"BigBadCat"。http://msdn.microsoft.com/en-us/library/system.runtime.serialization.ondeserializedattribute%28v=vs.110%29.aspx