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 dispositivo

Nã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

questionAnswers(4)

yourAnswerToTheQuestion