AttributeGroup 項目繫結支援
.NET Framework 會提供 <attributeGroup> 項目的部分繫結支援。
從 XML 結構描述文件產生原始程式碼時,Xsd.exe 會直接將每個 <attributeGroup> 參考展開到對應於 <complexType> 定義的類別,而該定義含有參考。
說明
<attributeGroup> 項目允許結構描述設計工具全域定義一組屬性,然後透過參考在任何複雜型別數量中重複使用該屬性群組。
.NET Framework 在程式碼中沒有用來表示屬性群組的慣用語。反而是從 XML 結構描述文件產生原始程式碼時,Xsd.exe 會透過 ref 屬性,直接將每個 <attributeGroup> 參考展開到對應於 <complexType> 定義的類別,而該定義含有參考。對於每個屬性則會產生公用欄位。每個公用欄位會顯示具有屬性 XmlAttributeAttribute,該屬性也可以用縮寫名稱 XmlAttribute 表示。
如果開發人員想要避免直接在多重類別中定義同一組屬性 (Attribute) 繫結欄位或屬性 (Property),則可以手動建立基底類別,然後讓代表 XML 結構描述複雜型別的類別繼承該基底類別。每個公用欄位或屬性 (Property) 應該會顯示具有 XmlAttribute 屬性 (Attribute),否則就會解譯成複雜型別中的項目,而非屬性 (Attribute)。
範例
輸入 XML 結構描述文件:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="qualified">
<xsd:attributeGroup name="version">
<xsd:attribute name="changeNumber" type="xsd:int" use="required"/>
<xsd:attribute name="instanceId" type="xsd:string" use="required"/>
</xsd:attributeGroup>
<xsd:complexType name="keyInfo">
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
</xsd:sequence>
<xsd:attributeGroup ref="version" />
</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;
[System.Xml.Serialization.XmlAttributeAttribute()]
public int changeNumber;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string instanceId;
}
從前面 C# 原始程式所編譯的組件產生的 XML 結構描述複雜型別:
<xs:schema xmlns:tns="http://example.org/" elementFormDefault="qualified" targetNamespace="http://example.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="key" type="tns:keyInfo" />
<xs:complexType name="keyInfo">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="key" type="xs:string" />
</xs:sequence>
<xs:attribute name="changeNumber" type="xs:int" />
<xs:attribute name="instanceId" type="xs:string" />
</xs:complexType>
</xs:schema>
可能的屬性 | 繫結支援 |
---|---|
id |
Xsd.exe 公用程式忽略試圖提供唯一識別項的 id 屬性。 |
name |
由於 Xsd.exe 公用程式匿名展開 <attributeGroup> 項目的內容,所以會忽略屬性群組名稱。 請參閱 Name 屬性繫結支援 屬性。 |
ref |
.NET Framework 在程式碼中沒有用來表示屬性群組的慣用語。反而是從 XML 結構描述文件產生原始程式碼時,Xsd.exe 會直接將每個 ref 屬性的全域宣告屬性群組 <attributeGroup> 參考展開到對應於 <complexType> 定義的類別,而該定義含有參考。對於 <attributeGroup> 中的每個屬性而言,都會產生具有屬性 System.Xml.Serialization.XmlAttributeAttribute 的公用欄位,而該屬性也可以用縮寫名稱 XmlAttribute。 |
可能的父項目:<attributeGroup>、<complexType>、<extension>、<redefine>、<restriction>、<schema>
可能的子項目:<annotation>、<anyAttribute>、<attribute>、<attributeGroup>
請參閱
參考
XmlSchemaAttributeGroup
XmlSchemaAttributeGroupRef
Copyright © 2007 by Microsoft Corporation. All rights reserved.