Как избавиться от XmlIgnoreAttribute () при динамическом создании прокси из wsdl? - PullRequest
0 голосов
/ 29 июля 2010

Я использую WebClient для чтения wsdl из URI.

WebClient client = new WebClient();
Stream wsdlStream = client.OpenRead(wsdlURI);
ServiceDescription wsdl = ServiceDescription.Read(wsdlStream);

Затем я устанавливаю Namespace и CompileUnit и использую метод GenerateCodeFromCompileUnit ServiceDescriptionImporter для создания файла класса .cs.

Затем я собираю из него сборку и использую отражение для вызова методов. Проблема в том, что мой созданный файл .cs имеет дополнительные атрибуты xml. И дополнительные параметры вроде:

public void Calc(int a, [System.Xml.Serialization.XmlIgnoreAttribute()] bool aSpecified

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

public int Calc(int a, int b)

и метод в сгенерированном исходном коде выглядит следующим образом:

public int Calc(int a, bool aSpecified, int b, bool bSpecified, out int CalcResult, out bool CalcResultSpecified)

Как получить динамически сгенерированный исходный файл без этих дополнительных параметров? Так что я могу скомпилировать его в сборку и использовать отражение для вызова оригинальных методов?

1 Ответ

0 голосов
/ 29 июля 2010

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

...