2011-01-14 2 views
0

Ich verwende SVCUTIL, um Datenkontraktklassen aus einem XSD zu generieren. Hier ist ein Ausschnitt aus dem XSD:SvcUtil Generieren benutzerdefinierter intermediärer Listentypen - Wie kann man eine generische Liste erstellen?

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

Anstelle der <Products> Elemente als Liste Eigenschaft des Fulfilment Objekt erzeugt wird, der Code, der generiert wird, ist dies:

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

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

Gibt es eine Möglichkeit zu make svcutil generiert die Eigenschaft Products als generische Produktliste direkt, anstatt die Klasse "ProductsType" zu erstellen, die von der Liste erbt und diese verwendet?

Antwort

0

Ja, wenn Sie eine Service-Referenz zu VS hinzufügen, können Sie entscheiden, wie eine Sammlung aus WCF konvertiert werden soll.

+0

Dies ist keine Service-Referenz, ich verwende SVCutil von der Befehlszeile, um die Datenvertragsklassen manuell zu generieren. – womp

3

Dort gehen Sie svcutil.exe http://localhost/Services/Sample.svc?wsdl /ct:System.Collections.Generic.List`1 Wenn dies die Antwort ist, dass Sie möchten, kreuzen Sie bitte

+0

Warum setzen Sie -1 ?? Es ist richtig das Problem ist, dass Sie nicht wie man es benutzt ... – Raffaeu

+0

Markiert, um -1 entgegenzuwirken – Quango

0

http://msdn.microsoft.com/en-us/library/aa347850.aspx Siehe für eine detaillierte Diskussion der Serialisierung von Sammlungen.

Ich fragte eine ähnliche Frage (Is there a reason for the nested generic collection classes in svcutil generated code?) und das MSDN-Dokument beantwortet es für mich. Solange Sie Svcutil verwenden, scheint es, dass Sie mit der redundanten internen Klasse festgefahren sind. Meine Schlussfolgerung war, dass, da der generierte Code und die Schnittstelle für den Konsumenten in beiden Fällen identisch sind, mir diese zusätzliche Klasse einfach egal sein wird.

Verwandte Themen