共用方式為


Value 屬性繫結支援

.NET Framework 會提供 value 屬性的部分繫結支援。

如果列舉型別限制已套用至字串型別,Xsd.exe 工具會將 <enumeration> Facet 的 value 屬性轉譯為 .NET Framework enum 成員。否則,.NET Framework 中的 XML 結構描述 Facet 和類別定義之間就會缺少繫結。

說明

XML 結構描述定義語言會透過約束基底簡單型別值的方式,提供各種衍生新簡單型別的機制。這些條件約束稱為 Facet,而且是指定為 <simpleType> (或 <simpleContent>) 定義中 <restriction> 項目的子系,可透過 XPath simpleType/restriction/facetName 路徑找出,其中 facetName 即為這裡所指的 Facet。Facet 項目的 value 屬性會指定適用於 Facet 的值。

字串型列舉中的 value 屬性

如果列舉型別限制已套用至字串資料型別,Xsd.exe 工具會將 <enumeration> Facet 的 value 屬性轉譯為 .NET Framework enum 成員。資料型別是透過 <restriction> 項目的 base 屬性指定。如需 Xsd.exe 工具解譯為字串的內建 XML 結構描述資料型別清單,請參閱 <enumeration> 項目。

列舉值必須限定為有效常數名稱或是由 Xsd.exe 轉換為常數名稱。下列為列舉值的範例:

<xsd:enumeration value="IRISH CREAM" />

此值會轉換為下列 enum 成員:

[System.Xml.Serialization.XmlEnumAttribute("IRISH CREAM")]
IRISHCREAM,

移除一個空格可以產生有效常數名稱,並且將 XmlEnumAttribute 屬性套用至 enum 成員。屬性參數會變更針對該 enum 值而使用的 XML 結構描述列舉值。預設值即為 enum 值本身,在此例中為 IRISHCREAM。對於已經限定為有效常數名稱的 XML 結構描述列舉值而言,則會省略 XmlEnum 屬性。

.NET Framework 不會將數值 XSD 列舉型別轉譯為 enum 定義時,但是會轉譯值碰巧為數字的字串 XSD 列舉型別。下列簡單型別定義指定 base="xsd:string",因此會繫結至 enum 型別:

<xsd:simpleType name="Primes">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="2" />
        <xsd:enumeration value="3" />
        <xsd:enumeration value="5" />
        <xsd:enumeration value="7" />
        <xsd:enumeration value="11" />
        <xsd:enumeration value="13" />
        <xsd:enumeration value="17" />
    </xsd:restriction>
</xsd:simpleType>

然後產生下列 enum 型別:

public enum Primes { 
    [System.Xml.Serialization.XmlEnumAttribute("2")]
    Item2,
    [System.Xml.Serialization.XmlEnumAttribute("3")]
    Item3,
    [System.Xml.Serialization.XmlEnumAttribute("5")]
    Item5,
    [System.Xml.Serialization.XmlEnumAttribute("7")]
    Item7,
    [System.Xml.Serialization.XmlEnumAttribute("11")]
    Item11,
    [System.Xml.Serialization.XmlEnumAttribute("13")]
    Item13,
    [System.Xml.Serialization.XmlEnumAttribute("17")]
    Item17,
}

XmlEnum 屬性會再次用來覆寫 xsd:enumeration 值至 XML 結構描述列舉值的預設繫結。

value 屬性的其他用法

除了字串繫結資料型別的列舉型別之外,使用 XML 結構描述 Facet 的簡單型別限制和 .NET Framework 中的類別定義之間沒有任何繫結。這表示下列事項 (字串列舉型別除外):

  • 從 XML 結構描述文件產生原始程式碼時,Xsd.exe 會忽略對簡單型別的限制;它只會產生對應至基底簡單型別的 .NET Framework 型別。

  • 將物件序列化為 XML 以及從 XML 還原序列化時,XmlSerializer 類別會忽略這些限制。

至於結構描述物件模型 (SOM),System.Xml.Schema 命名空間具有包含 Value 屬性的抽象 XmlSchemaFacet 類別。針對每個可能的限制 Facet 而從 XmlSchemaFacet 衍生的型別,可以用來以程式設計的方式建立透過 Facet 限制的結構描述物件模型。

可能的包含項目:所有限制 Facet

請參閱

參考

Value

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.