0
我正在實現lo-REST API並正在返回XML或JSON。在.NET WCF中構建它。用於REST的WCF wrap可變複雜類型
我都喜歡Flickr和最後FM的API,其包裹它們的變量複雜類型ALA簡單響應的設計:
<lfm status="ok">
<user>
<name>RJ</name>
<realname>Richard Jones </realname>
<country>UK</country>
<age>27</age>
</user>
</lfm>
或
<lfm status="ok">
<track>
<name>Best track ever</name>
<album>Thriller</album>
</user>
</lfm>
或
<lfm status="fail">
... error details
</lfm>
複雜類型的序列化非常簡單(使用DataContract,DataMember等)。但是,由於可能包含在內部的可變複雜類型,將它封裝在某種自定義響應中會讓我失望。給予響應由所述複合型滿不序列類型對象的成員:
[DataContract]
public class Response
{
public enum ResponseStatus
{
ok,
fail
}
[DataMember]
public ResponseStatus Status { get; set; }
[DataMember]
public object Data { get; set; }
}
任何想法或幫助感激。
非常感謝, 亞歷
編輯: 蒂姆·羅伯茨提供了一個有趣的解決方案,雖然它不能很好地連載。一個選項是將所有可能的複雜類型指定爲指定了[DataMember(EmitDefaultValue = false)]的屬性,因此空值不會連續化。不知道這是最好的解決方案。
實際上,將[KnownType]屬性放在Data類上更有意義。 – 2010-07-01 15:16:03
這幾乎就在那裏。問題在於它如何串聯。您最終得到一個像而不是的節點。 –
Maleks
2010-07-01 16:25:34