Почему Visual Studio использует вспомогательные поля для ссылок на службы WCF? - PullRequest
1 голос
/ 27 июля 2010

Как многие из вас знают, я могу использовать атрибут DataContract, чтобы пометить класс для сериализации в XML в службе WCF.

Например, я могу создать DataContract таким образом:

Открытый класс fooClass
Публичная fooString as String
Конечный класс

Когда я добавляю ссылку на службу в код, который получит этот DataContract, я вижу, что класс, сгенерированный конструктором, имеет fooString в качестве открытого свойства с полем поддержки. Мой вопрос: почему дизайнер использует вспомогательное поле? Я не вижу причин, чтобы не получить прямой доступ к fooString.

1 Ответ

4 голосов
/ 28 июля 2010

Это стандартный дизайн кода, используемый MS. И для веской причины использовать properties вместо public fields. Даже если на стороне сервера у вас будет такой контракт данных:

[DataContract]
class MyComplexType
{
   [DataMember]
   public int id;
   [DataMember]
   public string name;  
} 

В клиентском прокси-классе вы будете иметь их в качестве вспомогательных полей с именами типа idField, nameField ...

Так что он не связан с самим WCF, поэтому важно использовать properties вместо public fields, для которого вы можете легко найти руководство.

...