Group 項目繫結支援
本主題專門說明舊有技術。 應該使用下列建立 XML Web Service 及 XML Web Service 用戶端: Windows Communication Foundation.
.NET Framework 會提供 <group> 項目的部分繫結支援。
從 XML 結構描述文件產生原始程式碼時,Xsd.exe 會直接將每個 <group> 參考展開成對應至包含參考之 <complexType> 定義的類別。
說明
<group> 項目允許結構描述設計工具全域定義一組項目,然後透過參考在任何數量的複雜型別中重複使用該項目群組。
.NET Framework 在程式碼中沒有用來表示項目群組的慣用語。相反地,從 XML 結構描述文件產生原始程式碼時,Xsd.exe 會透過 ref 屬性,直接將每個 <group> 參考展開成對應至包含參考之 <complexType> 定義的類別。對於每個項目則會產生公用欄位。
如果開發人員想要避免直接在多重類別中定義同一組項目繫結欄位或屬性,則可以手動建立基底類別,然後讓代表 XML 結構描述複雜型別的類別繼承該基底類別。
XML 結構描述定義語言會讓 <group> 參考與 maxOccurs 屬性一起出現,而該屬性的值大於 1
。若要正確地匯入具有可多次出現群組的結構描述,請在 Xsd.exe 上使用 /order 命令列選項 (從這類 XML 結構描述產生原始程式碼時,Xsd.exe 在預設情況下,會不正確地為群組中的每個項目產生陣列。如果啟用 /order 選項,就可以為群組的所有成員產生一個陣列,其中包含多個 XmlElementAttribute 屬性,使每個群組成員各有一個屬性)。
Example
輸入 XML 結構描述文件:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="qualified">
<xsd:group name="version">
<xsd:sequence>
<xsd:element name="changeNumber" type="xsd:int"/>
<xsd:element name="instanceId" type="xsd:string"/>
</xsd:sequence>
</xsd:group>
<xsd:complexType name="keyInfo">
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:group ref="version" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="key" type="keyInfo"/>
</xsd:schema>
由前面的 XML 結構描述文件所產生的 C# 類別:
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute("key", Namespace="http://example.org/", IsNullable=false)]
public class keyInfo {
public string key;
public int changeNumber;
public string instanceId;
}
從前面 C# 原始程式所編譯的組件產生的 XML 結構描述複雜型別:
<xs:complexType name="keyInfo">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="key" type="xs:string" />
<xs:element minOccurs="1" maxOccurs="1" name="changeNumber" type="xs:int" />
<xs:element minOccurs="0" maxOccurs="1" name="instanceId" type="xs:string" />
</xs:sequence>
</xs:complexType>
可能的屬性 | 繫結支援 |
---|---|
id |
Xsd.exe 公用程式會忽略用來提供唯一識別項的 id 屬性。 |
maxOccurs |
從 XML 結構描述文件產生原始程式碼時,如果群組擁有許多大於 請參閱 MaxOccurs 屬性繫結支援 屬性。 |
minOccurs |
從 XML 結構描述文件產生原始程式碼時,如果 minOccurs 屬性已套用至 <group> 項目,Xsd.exe 會忽略該屬性。 請參閱 MinOccurs 屬性繫結支援 屬性。 |
name |
由於 Xsd.exe 公用程式匿名展開 <attributeGroup> 項目的內容,所以會忽略屬性群組名稱。 請參閱 Name 屬性繫結支援 屬性。 |
ref |
.NET Framework 在程式碼中沒有用來表示群組的慣用語。相反地,從 XML 結構描述文件產生原始程式碼時,Xsd.exe 會直接將每個 ref 屬性的全域宣告群組 <group> 參考展開成對應至包含參考之 <complexType> 定義的類別。對於 <group> 中的每個項目則會產生公用欄位。 |
可能的父項目:<choice>、<complexType>、<extension>、<redefine>、<restriction>、<schema>、<sequence>
可能的子項目:<all>、<annotation>、<choice>、<sequence>