Как заменить 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. Форматеры не требуются.