Динамически игнорировать данные членов от сериализации

У нас есть существующий сервис WCF, который использует несколько DataContracts. Мы хотим изменить сериализацию на основе устройства, чтобы при доступе с мобильных устройств сервис сериализировал только некоторые важные элементы данных (не все)

У нас есть 2 варианта здесь

Создайте отдельные контракты операций и данных для разных типов устройств.Беспорядок с фактической сериализацией XML и подавление создания ненужных элементов на основе устройства

Мы неЯ не хочу идти с первым вариантом, так как он создает много проблем с избыточным кодом в будущем

Небольшое исследование показало, что нам нужно использовать IXmlSerializable и переопределять методы readXML () и writeXML (). Но в то же время я видел где-то, что DataContract и IXmlSerializable не должны использоваться вместе

Любой пример возиться с фактической сериализацией высоко ценится.

[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; }
    }
}

Теперь, когда я получаю доступ к сервису, который возвращает типовой контракт данных TokenMessage, с мобильного устройства, я нене хочу "Экстра» Элемент данных, подлежащий сериализации, т.е. когда я предоставляю другой аргумент в контракт операции, он должен иметь возможность сериализации некоторых / всех элементов данных (в зависимости от действия)

PS: на данный момент, пожалуйста, игнорируйте часть обнаружения устройства. Предположим, у нас есть аргумент в договоре на эксплуатацию, который помогает нам идентифицировать устройство

Ответы на вопрос(4)

Ваш ответ на вопрос