Enum не прошел успешно от клиента .NET2.0 к службе WCF - PullRequest
2 голосов
/ 18 января 2012

У меня есть служба WCF (.NET4.0).Клиент находится в .NET2.0.Значения перечисления, передаваемые клиентом в службу, всегда устанавливаются со значением по умолчанию перечисления (которое является первым членом перечисления).

Это проблема в .NET2.0?Есть ли обходные пути?

1 Ответ

2 голосов
/ 18 января 2012

Указанное - это функция, используемая XmlSerializer.Я был ужален этим раньше.Это похоже на то, что все узнают об этой функции примерно одинаково болезненно.

Как вы говорите, если для этого параметра установлено значение false, ваше поле не будет сериализовано.К сожалению, false - это значение по умолчанию для логического поля, поэтому оно может очень раздражать, если вы забудете его установить.

Если вы не цените эту функцию, тогда вы сможете просто удалить поле Specified без последствий,Тогда поле всегда будет сериализовано.

Эти поля имеют значение только потому, что вы используете XmlSerializer в .NET 2. В приложении WCF .NET 4 вы используете DataContractSerializer, который не обладает этой функцией.

Значение по умолчанию enum на самом деле не получено WCF.На самом деле ничего не получено на сервере для этого перечисления.Следовательно, перечисление не установлено, поэтому оно остается значением по умолчанию.

...