Est-il possible de générer une propriété avec un getter public et un setter protégé avec CodeDOM? L'objectif est de réaliser quelque chose de similaire à ce qui suit.Getter public, setter protégé avec CodeDOM
[Serializable]
public class Wrapper {
public Wrapper() { }
private string _Field;
public string Field { get; protected set; }
}
J'ai une grande API basée sur COM pour laquelle je souhaite compiler un wrapper .Net il serait plus facile d'utiliser des fonctionnalités telles que .Net LINQ, Reflet, l'héritage et la sérialisation avec elle. Le seul moyen possible est d'automatiser de grandes parties de ce travail avec la génération de code.
Ces objets contiennent des propriétés en lecture seule que je souhaite exposer via la sérialisation, ce qui nécessite un paramètre de propriété. Mais si longtemps, je n'ai trouvé aucun moyen de protéger le setter ou similaire.
Une façon peut-être pour marquer la propriété de ne pas sérialisable et sérialiser l'_field mais comme un but pour la sortie sérialisé est web je dois attribuer le député avec tous les attributs possibles de sérialiseur qui dirigent le sérialiseur utiliser un nom de nettoyeur (sans le trait de soulignement) pour la sérialisation. Pour la même raison, je crois que la sérialisation personnalisée n'est pas possible.
Ce n'est pas si important que je peux le désérialiser avec précision, c'est à dire. il n'est pas critique que la valeur reste dans sa valeur d'origine pendant/à travers la désérialisation. Les propriétés sont en lecture seule uniquement pour réduire la confusion en empêchant le consommateur API d'essayer de modifier les champs en lecture seule et en se demandant pourquoi ils n'ont aucun effet sur quoi que ce soit.
Hm. XmlSerializer et JSON.Net JsonSerializer sont tous deux en mesure de le sérialiser. Je me suis souvenu mal que les sérialiseurs s'assurent qu'ils sont capables de désérialiser quand ils commencent à sérialiser. Donc, le problème d'origine n'était jamais là mais j'aimerais quand même savoir si la création de getter protégé est possible avec CodeDOM. –