Как заменить DataContractResolver в стеке Web Api?

Существует множество способов заменить DataContractResolver, если вы используете WCF, я хочу сделать то же самое с 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();

1 ответ

Если вы хотите использовать XmlSerializer, то

GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true

Если это не отвечает вашим потребностям, тогда сделайте

GlobalConfinguration.Configuration.Formatters.Clear();
GlobalConfinguration.Configuration.Formatters.Add(new YourOwnFormatterCanGoHere());

Еще один момент. Я использую Web API все время и уже несколько лет, и вообще редко использую средства форматирования. Я возвращаю HttpResponseMessage с производными версиями HttpContent. Не сказать, что вы должны делать то же самое, просто сказать, что есть много способов сделать что-то в Web API. Форматеры не требуются.

Другие вопросы по тегам