2015-03-21 6 views
1

J'ai joué avec des objets sérialisants et je me demande si vous pouvez utiliser l'attribut DataMember pour écraser la valeur sérialisée en fonction d'une condition? Par exemple, si j'avais cette propriété sur ma classe:Est-il possible d'utiliser DataMember pour remplacer la valeur de la propriété sérialisée?

[DataMember] 
public string Foo { get; set; } 

et je crée une instance de ma classe où Foo est réglé sur IsFoo, serait-il possible pour moi d'utiliser l'attribut DataMember de sérialisation dans quelque chose comme ceci:

<Foo>Bar</Foo> 

Notez que ceci est une question hypothétique et que dans la vie réelle ce serait certainement une mauvaise pratique ou un problème de données, mais est-il possible?

Répondre

1

Non vous ne pouvez pas faire cela.

L'attribut [DataMember] indique que la WCF DataContractSerializer à comprennent cette valeur (dans la propriété) dans le message WCF - il ne vous permet pas de modifier la valeur dans le processus ....

Si vous devez avoir Bar dans le message WCF, alors vous devez définir Foo = "Bar"; dans votre code ...

+0

Je pense que vous avez raison, il ne sera probablement pas logique de s'attendre à ce que l'attribut DataMember agisse de cette façon. ... et merci pour les conseils de rédaction aussi :-) –