我有一个.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输出。我应该在序列化器上启用某些东西吗?
提前致谢。