Comment prévenir automatique de la mise en œuvre des propriétés d'être sérialisé?
Comment puis-je éviter une auto mise en œuvre de la propriété d'être sérialisé par le module de formatage binaire?
L' [NonSerialized] attribut peut être utilisé uniquement avec les champs. Et le champ est masqué lors de l'utilisation de l'auto en œuvre propriétés.
Vous devez vous connecter pour publier un commentaire.
Ses pas pris en charge pour l'auto propriétés implémentées. Vous devez utiliser un champ de stockage et de définir la NonSerializedAttribute sur elle.
Mais il ne semble pas que pour les propriétés implémentées automatiquement. J'ai pensé qu'il était utile de mentionner parce que c'est utile de savoir lors de la sérialisation d'un objet d'événement d'abonnés attaché à elle.
Si vous êtes à la sérialisation Json et à l'aide de la Json.NET sérialiseur (qui, je le recommande vivement car il a beaucoup plus à offrir qu'un certain nombre d'autres sérialiseurs sur le marché), alors vous pouvez atteindre vos résultats souhaités sur les propriétés en utilisant
[JsonIgnore]
.Vous n'avez pas besoin de créer un champ.
De sorte que votre code serait:
Si vous êtes à la sérialisation Xml, alors vous pouvez utiliser l'attribut XmlIgnore.
Je ne suis pas sûr que vous le pouvez. Cette Article MSDN sur
SerializableAttribute
vous propose de mettre en œuvre ISerializable et de contrôle de la sérialisation vous-même:Ou de passer d'une auto-propriété de ce domaine particulier.
Il n'est pas possible pour l'auto propriétés implémentées.
Envisager suivantes:
Ce comportement est "by design". La décision au moment de l'auto-propriétés ont été mises en œuvre était qu'ils allaient travailler dans la "commune" qui, entre autres choses, signifie qu'aucun des attributs sur le champ généré. L'idée derrière tout ça est de les garder simple et pas lentement la mutation en plein propriétés.
Donc, si vous devez utiliser l'attribut NonSerialized plein propriétés sont la voie.
(http://social.msdn.microsoft.com/Forums/en-US/vcsharp2008prerelease/thread/2b6eb489-122a-4418-8759-10808252b195)
La solution proposée de l'utilisation de pas sérialisé champ de stockage ne semble pas fonctionner correctement avec .NET 4.0 (au moins dans le cas de la sérialisation Xml). Le domaine, en effet, ne pas être sérialisé, mais bien public qui l'utilise ne sérialiser et ainsi de défaites le but. À l'aide de XmlIgnore solution de contournement permet dans le cas de la sérialisation Xml. Avertissement - je n'ai pas vérifier la sérialisation binaire comportement.