我想要實現的東西似乎相當簡單。使用IXmlSerializable定製xml輸出
鑑於類
public class Wrapper<T> {
T Data { get; set; }
bool Success { get;set; }
List<Error> Errors { get; set; }
}
我只是想爲裹在<Data></Data>
標籤中的數據參數的XML輸出。
IE: 所需的輸出:
<Wrapper>
<Data>
<Person first="Bob" last="Robertson"/>
</Data>
<Errors/>
<Success>true</Success>
</Wrapper
實際輸出:
<Wrapper>
<Person first="Bob" last="Robertson"/>
<Errors/>
<Success>true</Success>
</Wrapper>
有一個簡單的實現IXmlSerializable的在那裏我可以獨自離開系列化大部分,只是換了一個會員?
編輯:這是一個WCF服務,所以我不(據我所知),有機會獲得創作的XmlSerializer的。
我最終什麼事做:
public void WriteXml(System.Xml.XmlWriter writer)
{
writer.WriteElementString("Success", Success.ToString());
writer.WriteStartElement("Errors");
foreach (var error in Errors)
{
Util.XmlSerialize(error, writer);
}
writer.WriteStartElement("Data");
Util.XmlSerialize(this.Data, writer);
writer.WriteEndElement();
}
-
public class Util
{
public static void XmlSerialize<T>(T obj, XmlWriter writer)
{
var nsSerializer = new XmlSerializerNamespaces();
nsSerializer.Add("", "");
var ser = new XmlSerializer(typeof (T));
ser.Serialize(writer, obj, nsSerializer);
}
}
那你試試? – onof 2012-02-07 13:13:08
@onof:我曾經嘗試過很多不好的事情,但是感覺自己正在重新實現XmlSerializer(例如,遵守註解等)。我認爲這可能是一種我忽略的簡單方法。我也嘗試重組我的代碼以更好地匹配我期望的格式,但看起來很臭。 – drch 2012-02-07 14:33:43