У меня есть пользовательский ContracteResolver, и я получаю непредсказуемые результаты.
Используя отладчик, я вижу, что при сериализации CreateProperty метод распознавателя вызывается для каждого свойства.Однако, если я сделаю 2 вызова подряд, метод CreateProperty не будет вызван при втором вызове.Моя точка останова в CreateProperty никогда не попадает на второй проход, она попадает на первый.
Вот мои настройки:
IContractResolver contractResolver = new ShouldSerializeContractResolver(fieldsToSerialize, this.Data);
var settings = new JsonSerializerSettings()
{
ContractResolver = contractResolver
};
_payload = JsonConvert.SerializeObject(this.Data, Formatting.None, settings);
Мое исходное значение (this.Data) отличается дляоба звонка.Результаты (_payload) также отличаются для обоих вызовов.Я не думаю, что что-то кэшируется.
Я видел похожий вопрос, который был вызван пользовательским ContentNegotiator, но я им не пользуюсь.
Почему бы CreateProperty не быть затронутымвторой проход?