SvcUtil генерирует пользовательские типы промежуточных списков - любой способ просто генерировать общий список? - PullRequest
0 голосов
/ 14 января 2011

Я использую svcutil для генерации классов обработки данных из XSD. Вот фрагмент из XSD:

<xs:element name="Fulfilment">

....
....
    <xs:element name="Products" minOccurs="0" maxOccurs="1">
      <xs:complexType>
         <xs:sequence>
             <xs:element minOccurs="0" maxOccurs="unbounded" 
                     type="Product" name="Product" />
         </xs:sequence>
      </xs:complexType>
    </xs:element>

Вместо того, чтобы элементы <Products> генерировались как свойство списка объекта Fulfilment, генерируемый код выглядит так:

 public ProductsType Products
        {
            get
            {
                return this.ProductsField;
            }
            set
            {
                this.ProductsField = value;
            }
        }

     public class ProductsType : System.Collections.Generic.List<Product>
     {
     }

Есть ли способ заставить svcutil сгенерировать свойство Products напрямую как общий список продуктов, вместо создания класса ProductsType, который наследуется от списка, и использования этого?

Ответы [ 3 ]

3 голосов
/ 14 января 2011

Вот вам svcutil.exe http://localhost/Services/Sample.svc?wsdl /ct:System.Collections.Generic.List`1 Если вам нужен этот ответ, отметьте

0 голосов
/ 08 июня 2012

См. http://msdn.microsoft.com/en-us/library/aa347850.aspx для подробного обсуждения сериализации коллекций.

Я задал похожий вопрос ( Есть ли причина для вложенных универсальных классов коллекций в сгенерированном svcutil коде? ) и тот документ MSDN ответил на это для меня.Пока вы хотите использовать svcutil, похоже, вы застряли с избыточным внутренним классом.Я пришел к выводу, что, поскольку он сгенерировал код и интерфейс для потребителя идентичен в обоих случаях, мне просто наплевать на этот дополнительный класс.

0 голосов
/ 14 января 2011

Да, когда вы добавляете ссылку на службу в VS, вы можете решить, как преобразовать коллекцию из WCF.

...