Почему VS2005 создает и элемент, и поле для полей веб-службы? - PullRequest
0 голосов
/ 15 июня 2009

При добавлении веб-ссылки в Visual Studio 2005 я заметил, что каждый элемент в wdsl дублируется. Например. для элемента ItemOne генерируемый им интерфейс содержит как ItemOne, так и itemOneField. Оба - одно и то же, но один является членом, а другой - полем. Я подозреваю, что поле - только получатель для участника.

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

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

Не указывайте, что такое изменение может привести к проблемам с совместимостью с предыдущими версиями VS. Меня интересует оригинальная причина этого.

Ответы [ 2 ]

0 голосов
/ 15 июня 2009

"Я заинтересован в оригинальном обосновании этого"

как и все, что было в фреймворке 3.0, единственным способом создания свойств было использование закрытой переменной и имени свойства

private string myItemField;

public string myItem() {
  get {
    return myItemField;
  }
  set {
    myItemField = value;
  }
}

но теперь в этом нет необходимости ...

public string myItem { get; set; }

Дело в том, что этот последний код компилируется как исходный код вверху, даже если его легче написать, он скомпилирован таким же старым способом, в результате вы получите приватную переменную и свойство.

То же самое происходит, когда вы добавляете веб-ссылку, ей нужна переменная для хранения "вещи", а затем метод ...

0 голосов
/ 15 июня 2009

Это свойство с полем поддержки. В чем проблема? Вы ожидали, что это сгенерирует автоматическое свойство? Их не было до недавнего времени. Зачем менять то, что работает, особенно если учесть, что ASMX (и WSDL.EXE) - практически мертвая технология.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...