1

ビジネス層に含まれる機能を WCF SOAP サービスを介して公開します。VS2008 を使用し、ビジュアル デザイン ツール ( XMLSpy ) を使用して XSD を記述し、 WSCF.blueを使用して WSDL を生成します。

私たちのスキーマの 1 つには、実質的にギザギザの配列があります。

<xs:element name="CriteriaGroups" minOccurs="0" maxOccurs="unbounded">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="CriteriaGroup" type="SearchCriterion" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

クライアントを生成すると、サービスへのすべての呼び出しが次のエラーで失敗します。

Unable to generate a temporary class (result=1) error CS0030: Cannot convert type 'SearchCriterion[]' to 'SearchCriterion'

ネット上の一般的な解決策は、次の行を次のように変更することReference.csです。

public SiDemSearchCriterion[][] CriteriaGroups

に:

public SiDemSearchCriterion[] CriteriaGroups

そして、そのプロパティとの間のすべての参照。

しかし、それは実行される可能性がありますが、機能しないため、役に立ちません。ほとんどのデータを破棄します。リストとしてすべてを行う設定は、何もしません。

スキーマを変更せずにこれを行う方法はありますか? これは私たちのスキーマなので、変更してそれほど問題にはなりません。「Microsoftスキーマ」の方法で設計したくないだけです。

コントラクト (WSDL + XSD) セットは、プラットフォームに依存せず、一般的な標準に基づいていると想定されています。

そう:

  1. スキーマを変更せずに SVCUTIL で動作するクライアントを構築する方法はありますか?
  2. SVCUTIL ですぐにクライアントをビルドできるようにスキーマを変更するにはどうすればよいですか?
4

0 に答える 0