我正在尝试自定义标准 ODataMediaTypeFormatter 的行为,并通过将它们包装在另一种扩展 MediaTypeFormatter 的类型中来做到这一点。例如
var formatters = ODataMediaTypeFormatters
.Create(serialiserProvider, deserialiserProvider)
.Select(formatter => new Wrapper(formatter));
config.Formatters.InsertRange(0, formatters);
WebAPI 配置方法执行后,config.Formatters 包含 12 项(其中 7 项是包装的格式化程序)。
但是,当响应被序列化时,config.Formatters 包含 17 个项目,因为标准 OData 格式化程序已在某些时候重新添加。然后优先使用相关的标准格式化程序而不是包装版本。
有谁知道这种重新添加何时发生以及是否/如何防止它?