Bonjour
J'ai une exception liée à la déserialisation d'une classe "DeviceConfig" lors de l'appel d'une opération WCF.
Le problème c'est que la version de "DeviceConfig" n'est pas la même entre le client et le serveur, coté serveur j'ai ajoute une propriété "DisplayName"."The formatter threw an exception while trying to deserialize the message : There was an error while trying to deserialize parameter.The InnerException message was ''Element' '_x003C_DriverConfig_x003E_k__BackingField' from namespace 'http://mon_namespace' is not expected. Expecting element '_x003C_DisplayName_x003E_k__BackingField'.'. Please see InnerException for more details."
Lorsque le serveur retourne la classe "DeviceConfig" vers le client il n'y pas de problèmé, le client ignore la propriété "DisplayName".
Par contre lorsque le client envoie "DeviceConfig" au serveur, celui s'attend à avoir une propriété "DisplayName", ne la trouvant pas il meurt dans d'atroces souffrances ( bon c'est pas vrai, en fait il envoie simplement une exception vers le client)
Donc la question est :
Comment peut on faire évoluer la classe DeviceConfig, en ajoutant une nouvelle propriété tout en restant compatible avec des clients qui n'ont pas la nouvelle version ?
La classe DeviceConfig :
Si quelqu'un a une idée je suis preneur. Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 [Serializable] public class DeviceConfig { public DeviceConfig() { } [XmlElement] public string Name { get; set; } [XmlElement] public string TypeName { get; set; } [XmlElement] public ProtoCfg ProtoConfig { get; set; } [XmlElement] public DriverCfg DriverConfig { get; set; } [XmlElement(IsNullable = true)] public string DisplayName { get; set;} }
Partager