0

XSD から datacontract クラスを生成するために svcutil を使用しています。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>
     {
     }

Productsリストから継承する「ProductsType」クラスを作成してそれを使用するのではなく、svcutil にプロパティを製品の汎用リストとして直接生成させる方法はありますか?

4

3 に答える 3

3

svcutil.exe http://localhost/Services/Sample.svc?wsdl /ct:System.Collections.Generic.List`1に移動します。これが必要な答えである場合は、チェックマークを付けてください。

于 2011-01-14T20:19:56.827 に答える
0

コレクションのシリアル化の詳細については、http://msdn.microsoft.com/en-us/library/aa347850.aspxを参照してください。

私は同様の質問をしました(svcutilで生成されたコードにネストされたジェネリックコレクションクラスの理由はありますか?)そしてそのMSDNドキュメントは私のためにそれに答えました。svcutilを使用したい限り、冗長な内部クラスでスタックしているように見えます。私の結論は、生成されたコードであり、コンシューマーのインターフェースはどちらの場合も同じであるため、その余分なクラスについては気にしないということでした。

于 2012-06-08T15:42:56.047 に答える
0

はい、VS にサービス参照を追加すると、コレクションを WCF から変換する方法を決定できます。

于 2011-01-14T02:55:30.603 に答える