如何将 Sabre EnhancedSeatMap v5.0.0 服务用作 .Net Web 参考
How to Use Sabre EnhancedSeatMap v5.0.0 Service as .Net Web Reference
在使用旧的 v2.0.0 后,我们决定将 Sabre SOAP EnhancedSeatMap 升级到 v5.0.0。我们将其用作我们的 C# .NET 4.5 项目的 Web 参考(而非服务参考)。实例化新的升级服务时:
var x = new EnhancedSeatMapService();
异常:
Cannot convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail[]' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail'
error CS0030: Cannot convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail[]' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail'
error CS0030: Cannot convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail[]' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail'
error CS0030: Cannot convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail[]' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail'
error CS0029: Cannot implicitly convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail[]'
error CS0029: Cannot implicitly convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail[]'
error CS0029: Cannot implicitly convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail[]'
error CS0029: Cannot implicitly convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail[]'
在 Sabre API 文档中有明确声明此版本支持 .net:
请帮忙
这实际上是因为 .NET 错误采用 sequence 和 maxOccurs="1000" 而不是将其理解为1000 限制,或者简单地作为一个数组,.NET 创建一个数组的数组。
<xsd:complexType name="AmenityTable">
<xsd:sequence>
<xsd:element name="AmenityDetail" maxOccurs="1000" minOccurs="0" type="imap-0400:Amenity_Detail">
这是双数组:
[System.Xml.Serialization.XmlArrayItemAttribute("AmenityDetail", typeof(Amenity_Detail), IsNullable=false)]
public Amenity_Detail[][] AmenityTable {
get {
return this.amenityTableField;
}
set {
this.amenityTableField = value;
}
}
您只需下载包含所有模式的 WSDL,然后从 imap-0400:Amenity_Detail
和 imap-0400:Price_AndTaxDescription_Detail
中删除 maxOccurs="1000"
如果没有,你可以使用我修改后的版本:https://files.fm/f/guzxxkkn
在使用旧的 v2.0.0 后,我们决定将 Sabre SOAP EnhancedSeatMap 升级到 v5.0.0。我们将其用作我们的 C# .NET 4.5 项目的 Web 参考(而非服务参考)。实例化新的升级服务时:
var x = new EnhancedSeatMapService();
异常:
Cannot convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail[]' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail'
error CS0030: Cannot convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail[]' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail'
error CS0030: Cannot convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail[]' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail'
error CS0030: Cannot convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail[]' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail'
error CS0029: Cannot implicitly convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail[]'
error CS0029: Cannot implicitly convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail[]'
error CS0029: Cannot implicitly convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Amenity_Detail[]'
error CS0029: Cannot implicitly convert type 'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail' to
'ServiceSupplier_Sabre.EnhancedSeatMapRQ.Price_AndTaxDescription_Detail[]'
在 Sabre API 文档中有明确声明此版本支持 .net:
请帮忙
这实际上是因为 .NET 错误采用 sequence 和 maxOccurs="1000" 而不是将其理解为1000 限制,或者简单地作为一个数组,.NET 创建一个数组的数组。
<xsd:complexType name="AmenityTable">
<xsd:sequence>
<xsd:element name="AmenityDetail" maxOccurs="1000" minOccurs="0" type="imap-0400:Amenity_Detail">
这是双数组:
[System.Xml.Serialization.XmlArrayItemAttribute("AmenityDetail", typeof(Amenity_Detail), IsNullable=false)]
public Amenity_Detail[][] AmenityTable {
get {
return this.amenityTableField;
}
set {
this.amenityTableField = value;
}
}
您只需下载包含所有模式的 WSDL,然后从 imap-0400:Amenity_Detail
和 imap-0400:Price_AndTaxDescription_Detail
maxOccurs="1000"
如果没有,你可以使用我修改后的版本:https://files.fm/f/guzxxkkn