我们正在将数据类型创建为XSD定义。然后将这些xsd文件导入WebSphere Application Server。
我们希望WebSphere Application Server能够使用这些数据类型调用WCF Web服务。
原始xsd如下:
<xs:simpleType name="Stillingsprosent">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:element name="gjennomsnittStillingsprosent" type="Stillingsprosent" minOccurs="0" maxOccurs="1"/>
通过xsd.exe运行此代码会生成以下C#代码:
public partial class GjennomsnittStillingsprosent {
private double gjennomsnittField;
private bool gjennomsnittFieldSpecified;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public double gjennomsnitt {
get {
return this.gjennomsnittField;
}
set {
this.gjennomsnittField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool gjennomsnittSpecified {
get {
return this.gjennomsnittFieldSpecified;
}
set {
this.gjennomsnittFieldSpecified = value;
}
}
}
当我们在WCF合约中使用此数据类型时,它会生成以下xsd:
<xs:complexType name="GjennomsnittStillingsprosent">
<xs:sequence>
<xs:element name="gjennomsnittField" type="xs:double"/>
<xs:element name="gjennomsnittFieldSpecified" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
<xs:element name="GjennomsnittStillingsprosent" nillable="true" type="tns:GjennomsnittStillingsprosent"/>
问题与minoccurs = 0的可选字段有关,这些字段实际上是可空的,但是在.net具有可空类型之前创建了xsd.exe。
我们如何确保WCF合同中使用的数据类型与XSD中指定的数据类型完全相同?
答案 0 :(得分:0)
声明如下:
[DataContract]
public class Stillingsprosent{
[DataMember]
public double stillingsprosent;
}
然后在某个地方使用它:
[DataMember(EmitDefault=false)]
public Stillingsprosent? gjennomsnittStillingsprosent;
EmitDefault = false表示默认情况下不会发出它(即此处为null)