2012-06-11 88 views
2

我使用IoC容器(autofac)管理我的對象。因爲我只使用接口而不是對象。ASP.NET 4 MVC Web API:將接口序列化爲XML

如果我的web api返回一個類型爲「Document」的對象,框架可以處理json和xml序列化。 我將[DataContract] -Attributes添加到Document-class,但在一個界面中這是不可能的。所以如果我想返回一個IDocument類型的對象,我得到一個HTTP代碼500. ASP.NET 4 MVC Web API現在是RC,框架仍然可以不將序列化接口成員到XML? Json序列化不成問題。

+0

它仍然不能在asp.net-mvc-5中工作:( –

回答

0

Web API接口上公開的類型必須是DTO - 數據傳輸對象。也可以稱爲ViewModels。

這是在客戶端不可知的Web API上公開您的模型的反模式。

如果您的API純粹是爲了使用.NET客戶端,您可以使用WCF或使用KnownType。也可以將它們與界面一起使用。

+0

我想爲移動客戶端提供一個休息api。好吧,也許我必須使用純類(DTOs),或者我可以實現自定義格式化程序爲我的xml-表示方式(json可以和接口一起工作) – user437899

+0

必須有一種使用接口的方式,否則,IoC和DependencyResolver的目的是什麼?Jsonformatter可以這樣做,但是如果T想要使用一個從接口我得到:配置的格式化'System.Web.Http.Tracing.Tracers.XmlMediaTypeFormatterTracer'不能寫入'WhereSelectListIterator'2'類型的對象。即使我把它轉換爲類類型。 – user437899