【问题标题】:ASP.NET 4 MVC Web API: Serialization of an interface to XMLASP.NET 4 MVC Web API:将接口序列化为 XML
【发布时间】:2012-06-11 14:23:57
【问题描述】:

我使用 IoC 容器 (autofac) 管理我的对象。因此,我只使用接口而不是对象。

如果我的 web api 返回一个“文档”类型的对象,框架可以处理 json 和 xml 序列化。 我在 Document-class 中添加了 [DataContract]-Attributes,但在接口中这是不可能的。

所以如果我想返回一个 IDocument 类型的对象,我会得到一个 HTTP 代码 500。 ASP.NET 4 MVC Web API 现在是RC,框架还不能把接口成员序列化成xml吗? Json序列化没问题。

【问题讨论】:

  • 在asp.net-mvc-5中还是不行:(

标签: xml asp.net-mvc-4 asp.net-web-api


【解决方案1】:

Web API 接口上公开的类型必须是 DTO - 数据传输对象。也可以称为 ViewModels。

在与客户端无关的 Web API 上公开模型是一种反模式。

如果您的 API 纯粹用于 .NET 客户端的使用,您可以使用 WCF 或使用 KnownType。配合界面使用也应该没问题。

【讨论】:

  • 我想要一个用于移动客户端的 rest api。好的,也许我必须使用纯类(DTO)或者我可以为我的 xml 表示实现自定义格式化程序(json 与接口一起工作)
  • 必须有使用接口的方法。否则,IoC 和 DependencyResolver 的目的是什么。 Jsonformatter 可以做到,但如果 T 想使用从接口派生的对象,我得到: 配置的格式化程序“System.Web.Http.Tracing.Tracers.XmlMediaTypeFormatterTracer”无法写入“WhereSelectListIterator`2”类型的对象.即使我将它转换为类类型。
猜你喜欢
  • 1970-01-01
  • 2012-08-29
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
  • 2012-10-11
  • 2021-12-17
  • 2013-09-25
  • 1970-01-01
相关资源
最近更新 更多