Ignorar dinamicamente os membros de dados de serem serializados
Temos um serviço WCF existente que usa vários DataContracts. Queremos modificar a serialização com base no dispositivo, para que, quando acessado de dispositivos móveis, o serviço serialize apenas alguns membros de dados importantes (nem todos)
Temos 2 opções aqui
Crie contratos de operação e dados separados para diferentes tipos de dispositivosMexer com a serialização xml real e suprimir a criação de elementos desnecessários com base no dispositivoNão queremos seguir com a primeira opção, pois ela apresenta muitos problemas de código redundantes no futuro
Pequenas pesquisas mostraram que precisamos usar IXmlSerializable e substituir os métodos readXML () e writeXML (). Mas, ao mesmo tempo, vi em algum lugar que DataContract e IXmlSerializable não devem ser usados juntos
Qualquer exemplo para mexer com a serialização real é muito apreciado.
[DataContract]
public class TokenMessage
{
string tokenValue;
string extraValue;
[DataMember]
public string Token
{
get { return tokenValue; }
set { tokenValue = value; }
}
[DataMember]
public string Extra
{
get { return extraValue; }
set { extraValue = value; }
}
}
Agora, quando eu acessar o serviço que retorna um contrato de dados TokenMessage típico, a partir de um dispositivo móvel, não quero que o membro de dados "Extra" seja serializado. serialize alguns / todos os membros de dados (dependendo da ação)
PS: Por enquanto, ignore a parte de detecção do dispositivo. Vamos supor que temos um argumento no contrato de operação, que nos ajuda a identificar o dispositivo