0

为了向我的应用程序提供更多元数据,我想围绕我的数据库查询包装一些额外的信息(使用普通的 SQL 数据访问,没有实体框架或其他 ORM)。

我有一个APIQueryResult对象设置为:

string Status { get; set; }
string[] Errors { get; set; }
object[] Data { get; set;}

Data是我的 POCO 对象的数组。

如果我请求 JSON,那么一切都可以序列化,包括我的元数据 + 对象数据。但是,如果我请求 XML,则会收到以下错误:

“ObjectContent`1”类型无法序列化内容类型“application/xml”的响应正文;字符集=utf-8'。

注意:这个想法的灵感来自 Filip W ( http://www.strathweb.com/2012/06/extending-your-asp-net-web-api-responses-with-useful-metadata/ ) 但我没有想要变得像编写 HttpHandler 等一样复杂。

如果我无法返回普通类或类实例的 IEnumerable/List,是否有更好的方法至少向客户端提供错误信息?

谢谢!

4

1 回答 1

1

您可以在您的 APIQueryResult 对象上实现 IXmlSerializable。稍加思考,使用 XmlWriter 手动序列化该信息的行数不应超过 20-30 行。我想这取决于你的 DTO 有多复杂。这样做的好处是您可以完全控制 XML 的外观。

于 2013-05-11T14:11:31.937 回答