2011-01-14 2 views
0

J'utilise svcutil pour générer des classes de contrat de données à partir d'un XSD. Voici un extrait de la XSD:SvcUtil générer des types de listes intermédiaires personnalisés - un moyen de générer une liste générique?

<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> 

Au lieu des <Products> éléments étant généré comme une propriété de liste de l'objet Fulfilment, le code qui est généré est le suivant:

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

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

est-il un moyen de make svcutil génère la propriété Products directement comme une liste générique de produits, plutôt que de créer la classe "ProductsType" qui hérite de la liste, et de l'utiliser?

Répondre

0

Oui, lorsque vous ajoutez une référence de service sur VS, vous pouvez décider comment convertir une collection à partir de WCF.

+0

Ce n'est pas une référence de service, j'utilise svcutil depuis la ligne de commande pour générer manuellement les classes de contrat de données. – womp

3

Il vous allez svcutil.exe http://localhost/Services/Sample.svc?wsdl /ct:System.Collections.Generic.List`1 Si cela est la réponse que vous voulez, s'il vous plaît cocher

+0

Pourquoi avez-vous mis -1? C'est correct le problème est que vous ne savez pas comment l'utiliser ... – Raffaeu

+0

Marqué pour contrecarrer -1 – Quango

0

Voir http://msdn.microsoft.com/en-us/library/aa347850.aspx pour une discussion détaillée de sérialisation des collections.

J'ai posé une question similaire (Is there a reason for the nested generic collection classes in svcutil generated code?) et ce document MSDN a répondu pour moi. Tant que vous voulez utiliser svcutil, il semble que vous soyez bloqué avec la classe interne redondante. Ma conclusion était que puisque le code est généré et que l'interface pour le consommateur est identique dans les deux cas, je ne m'intéresserai pas à cette classe supplémentaire.

Questions connexes