XSDデータ契約で汎用型パラメータを指定する方法
-
12-12-2019 - |
質問
WebServiceメソッド呼び出しのために、次の要求および応答データ契約ペアを持っています
<xs:element name="GetUserOptionsRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="OptionType" type="entities:UserOption" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetUserOptionsResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="Options" type="entities:UserOption" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
.
問題は、私がしたいことは言う方法(疑似コード)
GetUserResponse response = GetuserOptions(new GetUserOptionsRequest(Type T))
.
と応答にはILISTが含まれているのかによって、ILISTが含まれています。
上記のデータ契約XSDでは、タイプ定義を指定するだけで、リクエストオブジェクトのクラスのインスタンスを期待しています。
本当に私がそれを望むものを考えていると思います
GetUserResponse<T> response = GetUserOptions(new GetUserOptionsRequest<T>());
.
しかし、XSDの汎用クラス/メソッドの指定方法はわからない。誰かが私を良い記事で指しているか、XSDでこれを定義できる方法を説明することができますか?
コード生成にもwscf blueを使用しています。
解決
残念ながら、 Open Generics をXSDで定義するには、ではできません。
実際には、XSDは一般的な種類の引数を表す原生の方法はまったくありません。ただし、XSDスキーマから .NET型を生成する場合は、http://msdn.microsoft.com/en-US/NetFramework/GG413252#o "" REL="NOFOLLOW"> MIMIC 閉じられた汎用引数 <xsd:annotation>
<xsd:appinfo>
要素:
.
<xs:element name="Foo">
<xs:complexType>
<xs:sequence>
...
</xs:sequence>
<xs:annotation>
<xs:appinfo>
<GenericType Name="FooOf{0}{#}"
Namespace="...">
<GenericParameter Name="string"
Namespace="http://www.w3.org/2001/XMLSchema" />
</GenericType>
</xs:appinfo>
</xs:annotation>
</xs:complexType>
</xs:element>