如果您使用的是WCF,则有多种不同的方法可以替换DataContractResolver,我想对Web Api做同样的事情。我找到的唯一扩展点是这样的:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SetSerializer<Person>(new DataContractSerializer(typeof(Person), null, Int32.MaxValue, false, false, null, new TypeNameVersioning()));
我正在寻找(伪代码)行中的东西:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SetDataContractResolver = new TypeNameVersioning();
如果要使用 XmlSerializer,则
GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true
如果这不能满足您的需求,请执行
GlobalConfinguration.Configuration.Formatters.Clear();
GlobalConfinguration.Configuration.Formatters.Add(new YourOwnFormatterCanGoHere());
还有一点。 我一直使用 Web API,现在已经有好几年了,我很少使用格式化程序。 我返回 HttpResponseMessage 和 HttpContent 的派生版本。 并不是说你应该做同样的事情,只是说在 Web API 中有很多方法可以做事。 格式化程序不是必需的。