В .NET-мире, когда дело доходит до сериализации объектов, оно обычно идет на проверку полей и свойств объекта во время выполнения. Использование отражения для этого задания обычно медленное и нежелательно при работе с большими наборами объектов. Другим способом является использование IL emit или построение деревьев выражений, которые обеспечивают значительное увеличение производительности за счет отражения. И последнее - это самые современные библиотеки, которые выбирают при работе с сериализацией. Однако для создания и испускания ИЛ во время выполнения требуется время, и инвестиции выплачиваются только тогда, когда эта информация кэшируется и повторно используется для объектов того же типа.
При использовании Json.NET мне непонятно, какой метод, описанный выше, используется, и если последний действительно используется, используется ли кеширование.
Например, когда я делаю:
JsonConvert.SerializeObject(new Foo { value = 1 });
Создает ли Json.NET информацию о доступе к члену Foo и кэш для повторного использования позже?