La meilleure option pour personnaliser la désérialisation est un constructeur manuscrit ou une méthode d'usine. C'est assez vrai dans n'importe quel environnement - si vous êtes un type sous-jacent n'est pas biunivoque avec la sérialisation, vous aurez besoin d'être plus spécifique.
Nous avons utilisé Script # pour un grand projet, et cela a généralement été notre approche face à ces situations. Cela dit, nous essayons généralement d'écrire nos propres types en utilisant les propriétés, de sorte que la désérialisation fonctionne plus naturellement.
Est-il sûr de supposer que, pour une raison quelconque, vous n'avez pas le contrôle de la définition de la classe Person? Si ce n'est pas le cas, je vous recommande fortement de refactoriser la classe pour utiliser une propriété "Name" avec un champ "nom" privé. Non seulement cela est plus idiomatique, mais cela pourrait aussi vous éviter des problèmes.
Edit:
A écrit avec mon cerveau au large. Pardonne. J'aurais dû dire que nous essayons d'écrire des classes côté script en utilisant des champs plutôt que des propriétés. Là encore, nos besoins du serveur au client sont si différents que nous n'essayons même pas d'utiliser la même bibliothèque des deux côtés, donc nous pouvons nous en sortir.