Estou usando o .NET 3.5SP1 e DataContractSerializer para serializar uma classe. No SP1, eles mudaram o comportamento para que você não precise incluir atributos DataContract / DataMember na classe e isso apenas serializará a coisa toda. Esse é o comportamento que estou usando, mas agora preciso ignorar uma propriedade do serializador. Eu sei que uma maneira de fazer isso é adicionar o atributo DataContract à classe e apenas colocar o atributo DataMember em todos os membros que eu quero incluir. Tenho razões, porém, para que isso não funcione para mim.
Portanto, minha pergunta é: existe um atributo ou algo que eu possa usar para fazer o DataContractSerializer ignorar uma propriedade?
c#
.net
wcf
serialization
NotDan
fonte
fonte
[IgnoreDataMember]
não funcionaria se a classe tivesse[Serializable]
atributo Veja detalhes na resposta de Doug .Além disso, o DataContractSerializer serializa itens marcados como [Serializable] e também serializa tipos não marcados no .NET 3.5 SP1 e posterior, para permitir suporte para serialização de tipos anônimos.
Portanto, depende de como você decorou sua classe e como impedir que um membro serialize:
[DataContract]
, remova o[DataMember]
da propriedade.[Serializable]
, adicione[NonSerialized]
na frente do campo a propriedade.[IgnoreDataMember]
a à propriedade.fonte
Na serialização XML, você pode usar o atributo [XmlIgnore] (System.Xml.Serialization.XmlIgnoreAttribute) para ignorar uma propriedade ao serializar uma classe.
Isso pode ser útil para você (ou pode ser útil para quem encontrou essa pergunta ao tentar descobrir como ignorar uma propriedade ao serializar em XML, como eu era).
fonte
Tente marcar o campo com o atributo [NonSerialized ()]. Isso instruirá o serializador a ignorar o campo.
https://msdn.microsoft.com/en-us/library/system.nonserializedattribute(v=vs.110).aspx
fonte
O que você está dizendo está em conflito com o que diz na biblioteca do MSDN neste local:
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx
Não vejo nenhuma menção ao recurso SP1 que você mencionou.
fonte