Как заставить JavaScriptSerializer игнорировать теги [ScriptIgnore]?
Мне нужно, чтобы JavaScriptSerializer игнорировал [ScriptIgnore]
теги. Я думаю, что могу сделать это с помощью специального JavaScriptConverter. Однако я не так уверен. Все, что мне нужно сделать, это игнорировать атрибут, а остальное можно сделать с помощью базового определения. Вы можете увидеть код для JavaScriptSerializer
здесь
Я обеспокоен тем, что реализация пользовательского конвертера, такого как этот пример, приведет к неправильной сериализации сложного пользовательского графа объектов.
Оглядываясь назад на код Microsoft для JavaScriptSerializer, он-лайн 252-253
код:
// Ignore all fields marked as [ScriptIgnore]
if (fieldInfo.IsDefined(typeof(ScriptIgnoreAttribute), true /*inherits*/))
continue;
это единственная часть, которую мне действительно нужно обойти. Мне просто нужно закомментировать эту строку кода. К сожалению, это на самом деле невозможно, поэтому мне нужен какой-то метод, чтобы можно было просто игнорировать эту часть всего процесса.
Как я могу игнорировать эту строку кода, или как-то обеспечить пользовательскую реализацию, которая не игнорирует [ScriptIgnore]
атрибуты?
1 ответ
В итоге мне пришлось имитировать класс JavaScriptSerializer и обеспечить некоторую настройку внутри класса mimic'd. Не уверен, что я бы предложил сделать это, или что это очень читабельно. С другой стороны, это работает, и мне это нравится.