XmlDataContractSerializer在IEnumerable收益率上失败

时间:2017-04-15 19:54:58

标签: c# .net asp.net-mvc asp.net-core xml-serialization

我有一个.Net Core控制器的操作,它返回一个产品列表:

public IActionResult GetProductFeed([ModelBinder(BinderType = typeof(ProductFeedFilterModelBinder))] ProductFeedFilter filter)
{
    ...
    //return Ok(new List<ProductFeedItem> { new ProductFeedItem() });
    return Ok(Test());
}

private IEnumerable<ProductFeedItem> Test()
{
    yield return new ProductFeedItem();
}

我还启用了xml数据协定序列化程序:

services.AddMvc(options => 
{
    options.OutputFormatters.Add(new CsvOutputFormatter());
    options.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());

    options.FormatterMappings.SetMediaTypeMappingForFormat("csv", new MediaTypeHeaderValue("text/csv") { Charset = "utf-8" });
    options.FormatterMappings.SetMediaTypeMappingForFormat("xml", new MediaTypeHeaderValue("application/xml"));
}).AddControllersAsServices();

如果方法返回产品供稿项列表,那么它工作正常,但是对于yield方法,我得到一个类型为ProductFeedController +&lt;&lt;测试&gt;&gt; d__3无法序列化。考虑使用DataContractAttribute标记它。

这适用于json输出。我应该在序列化器上启用某些东西吗?

提前致谢。

0 个答案:

没有答案