Я импортировал стороннего пользователя WSDL
(через ссылку «Сервис») в проект «Консольное приложение» для отправки и получения данных через веб-службы. Чтобы заставить это функционировать должным образом, мне пришлось добавить код в файл Reference.cs
, связанный с веб-службой. Хотя это работает, если обновление сделано в WSDL, и я повторно импортирую/создаю эту ссылку на службы, этот код обхода исчезнет.Переопределение порожденного частичного класса
Чтобы обойти это, я сохранил необходимые изменения кода во внешний текстовый файл, сохраненный в проекте.
Мне любопытно, знает ли кто-нибудь, каким образом я мог бы записать эти изменения в свой отдельный класс вне справочной службы и все же ссылаться на ссылку на службу, используя, таким образом, код, необходимый для отправки/получения с веб-службы.
У меня есть два класса (не включены в сгенерированный код), которые я могу ссылаться в сгенерированном коде после их разделения в свой собственный файл .cs
и ссылаясь на namespace
, используемый в справочной службе.
То, что я хотел бы сделать, если это возможно, заключается в следующем:
Общая цель:
Добавить пользовательский код в код, генерируемый путем импорта третьей стороной WSDL как справочная служба, таким образом, когда WSDL обновляется сторонним разработчиком, другой разработчик не должен обязательно помнить, чтобы погрузиться в файл
Reference.cs
справочной службы и заменить/добавить конкретный код.
Для достижения этой цели, я должен быть в состоянии:
- Заменить существующее свойство и связанного с ним поля генерируемого
partial class
с заказной версии (см Snippet # 1 ниже). - Замените существующий сгенерированный
partial class
на индивидуальную версию класса, имеющую другое определение атрибута и несколько отличающиеся определения свойств/полей.
Отрывок # 1
Заменить следующее:
private byte[] bulkExchangeFileField;
[System.Xml.Serialization.XmlElementAttribute(Namespace = "urn:us:gov:treasury:irs:common", DataType = "base64Binary", Order = 0)]
public byte[] BulkExchangeFile
{
get { return this.bulkExchangeFileField; }
set
{
this.bulkExchangeFileField = value;
this.RaisePropertyChanged("BulkExchangeFile");
}
}
с этой версией свойств/полей, которые работали когда-то я изменил сгенерированный код:
private BulkExchangeFileType bulkExchangeFileField;
[System.Xml.Serialization.XmlElementAttribute(Namespace = "urn:us:gov:treasury:irs:common", Order = 0)]
public BulkExchangeFileType BulkExchangeFile
{
get { return this.bulkExchangeFileField; }
set
{
this.bulkExchangeFileField = value;
this.RaisePropertyChanged("BulkExchangeFile");
}
}
Спасибо за ваш ответ. Я не уверен, что полностью понимаю, что вы говорите о перегрузке свойств. Сможете ли вы отредактировать свой ответ, чтобы предоставить какие-либо примеры/образцы? Я хочу заменить одно свойство другим типом: свойство, определенное как 'byte []', с именем, определенным как 'BulkExchangeFileType'. Я обновил свой пост с более подробной информацией о том, что я ищу. – Russ