J'ai écrit une application qui consomme un service Web, télécharge des données au format JSON, la désérialise en classes. Le service est basé sur PHP (je crois).L'encapsulation en ligne a cessé de fonctionner
Récemment, le service Web a eu une mise à jour qui a eu des conséquences inattendues sur mes déclarations de classe. Jusqu'à récemment, j'utilise cette ligne pour l'une des variables de classe
public string consent_id { get { return consent_id.ToUpper(); } set { consent_id = value; } }
et il a apparemment travaillé bien. Cependant, depuis la mise à jour de leur service. Cela a été à l'origine d'une exception de débordement de pile et j'ai dû changer le code pour
string Consent_id;
public string consent_id { get { return Consent_id.ToUpper(); } set { Consent_id = value; } }
Il se sent comme la première ligne a commencé à appeler récursive l'encapsulateur set.
Est-ce que quelqu'un sait pourquoi le premier a cessé de fonctionner? La raison de son lancer une exception de débordement de pile? Y at-il un moyen de définir le Getter sans régler le Setter inline afin de ne pas encapsuler tout ce qui nécessite un Getter modifié?
Merci
Dans votre première ligne, vous appelez récursivement getter lorsque vous appelez 'return consent_id.ToUpper();'. Donc, c'est une bonne pratique d'utiliser le support déposé dans ce cas. Et vous ne pouvez pas définir un corps de getter sans définir un corps de setter –
@GeorgeAlexandria Lors des tests, nous avons pris le ToUpper() et il n'a pas changé. C'était le Setter qui lançait l'exception aussi. – Seige
Avez-vous testé le premier exemple ou le second avec le champ de support? –