Лучшим вариантом для настройки десериализации является рукописный конструктор или фабричный метод. Это вполне справедливо в любой среде - если ваш базовый тип не совместим с сериализацией один-к-одному, вам нужно быть более конкретным.
Мы использовали Script # для большого проекта, и, как правило, это был наш подход в таких ситуациях. Тем не менее, мы обычно пытаемся писать свои собственные типы, используя свойства, чтобы десериализация работала более естественно.
Можно ли предположить, что по какой-то причине у вас нет контроля над определением класса Person? Если это не так, я настоятельно рекомендую вам изменить класс для использования свойства «Имя» с собственным полем «имя». Это не только более идиоматично, но и может избавить вас от хлопот.
Edit:
Написал с выключенным мозгом. Пойду прости. Я должен был сказать, что мы пытаемся написать классы на стороне сценария, используя поля, а не свойства. С другой стороны, наши потребности от сервера к клиенту настолько различны, что мы даже не пытаемся использовать одну и ту же библиотеку с обеих сторон, поэтому мы можем с этим справиться.