2
我具有以下簡單XSD文件XSD,泛型和C#類:困境與
<xs:element name="Search" type="SearchObject"/>
<xs:complexType name="SearchObject">
<xs:choice>
<xs:element name="Simple" type="SimpleSearch"/>
<xs:element name="Extended" type="ExtendedSearch"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="SimpleSearch">
<xs:sequence>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ExtendedSearch">
<xs:sequence>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
<xs:element name="Age" type="xs:int"/>
<xs:element name="Address" type="xs:string"/>
</xs:sequence>
</xs:complexType>
我使用Visual Studio殼牌這樣的:
xsd XMLSchema.xsd /c
基本上/ c表示生成C#類選自XMLSchema.xsd。
中的類則是這個樣子之一:
[System.Xml.Serialization.XmlRootAttribute("Search", Namespace="http://tempuri.org/XMLSchema.xsd", IsNullable=false)]
public partial class SearchObject {
private object itemField;
[System.Xml.Serialization.XmlElementAttribute("Extended", typeof(ExtendedSearch))]
[System.Xml.Serialization.XmlElementAttribute("Simple", typeof(SimpleSearch))]
public object Item {
get {
return this.itemField;
}
set {
this.itemField = value;
}
}
}
我的第一個問題是,爲什麼是房地產「項目」不叫「搜索」,因爲我已經設置XSD文件內部的元素?
我的第二個問題是爲什麼是屬性項目類型的對象?我設置了一個選擇我的xsd文件裏面,我想在C#代碼看起來更象這樣:
public partial class SearchObject<T> where T : SimpleSearch, where T : ExtendedSearch
{
public T Search
{
get ...
set ...
}
}
我想總得有一個通用類,只允許我見裏面選擇指定的類型在xsd文件中阻止這是我的例子SimpleSearch和ExtendedSearch。
這是甚至可能的,如果是的話,我該怎麼做對嗎?
這是正確的。 XSD對泛型一無所知 –