Как заставить 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. Не уверен, что я бы предложил сделать это, или что это очень читабельно. С другой стороны, это работает, и мне это нравится.

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