将XML属性添加到WCF服务

时间:2014-07-30 13:23:59

标签: c# wcf

我有一个这样的课程,

[DataContract]
public class FruitCrate
{
  [XmlAttribute]
  public int NumberOfFruits;

  [DataMember(Name = "Cats")]
  public List<Cats2009> Cats;
}

[DataContract]
public class Cats2009
{
    [DataMember]
    public string Name;
}

现在即使Fruit Crate中没有Cats,我仍然希望它返回结果为

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

2 个答案:

答案 0 :(得分:0)

[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,但它不必包含任何猫。


我做了一些自己的研究,如果你想要XmlAttributes,就不能使用DataContract。您必须实现ISerializable或使用.NET XmlSerializer。

答案 1 :(得分:0)

您还可以添加方法并使用[OnSerialized] / [OnDeserialized]属性对其进行标记。这将允许您更改&#34; Cats&#34;的内容。如果它为null或空为&#34; BigBadCat&#34;。 http://msdn.microsoft.com/en-us/library/system.runtime.serialization.ondeserializedattribute%28v=vs.110%29.aspx