我有一个这样的课程,
[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>
答案 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