我们已将EnhancedAirBook升级到最新版本3.2.0
我们使用Visual Studio 2013(Update 5)将EnhancedAirBook作为Web引用使用
在代码中,我们设置了EnhancedAirBook Request对象
在添加OTA_AirPriceRQ请求时,我们设置PriceRequestInformation Retain属性=“true”。
但是当我们将请求对象淡化为字符串并查看XML时,PriceRequestInformation元素上不存在Retain属性(见下文)。
request.OTA_AirPriceRQ = new EnhancedAirBookRQOTA_AirPriceRQ
{
PriceRequestInformation = new EnhancedAirBookRQOTA_AirPriceRQPriceRequestInformation
{
OptionalQualifiers =
new EnhancedAirBookRQOTA_AirPriceRQPriceRequestInformationOptionalQualifiers
{
PricingQualifiers =
new EnhancedAirBookRQOTA_AirPriceRQPriceRequestInformationOptionalQualifiersPricingQualifiers
{
CurrencyCode = paramsService.Currency
}
},
Retain = true
}
};
它的反序列化表示是:
<OTA_AirPriceRQ xmlns="http://services.sabre.com/sp/eab/v3_2">
<PriceRequestInformation>
<OptionalQualifiers>
<PricingQualifiers CurrencyCode="USD">
<PassengerType Code="ADT" Quantity="1" />
</PricingQualifiers>
</OptionalQualifiers>
</PriceRequestInformation>
我们找到了解决方法。
备注/删除EnhancedAirBook的Reference.cs文件中的所有其他PriceRequestInformation属性,并仅保留Retain属性。 (见下文)
代码:
/// <remarks/>
//[System.Xml.Serialization.XmlAttributeAttribute()]
//public bool FutureTicket
//{
// get
// {Re
// return this.futureTicketField;
// }
// set
// {
// this.futureTicketField = value;
// }
//}
/// <remarks/>
//[System.Xml.Serialization.XmlIgnoreAttribute()]
//public bool FutureTicketSpecified
//{
// get
// {
// return this.futureTicketFieldSpecified;
// }
// set
// {
// this.futureTicketFieldSpecified = value;
// }
//}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public bool Retain {
get {
return this.retainField;
}
set {
this.retainField = value;
}
}
/// <remarks/>
//[System.Xml.Serialization.XmlIgnoreAttribute()]
//public bool RetainSpecified
//{
// get
// {
// return this.retainFieldSpecified;
// }
// set
// {
// this.retainFieldSpecified = value;
// }
//}
它的反序列化表示是:
<OTA_AirPriceRQ xmlns="http://services.sabre.com/sp/eab/v3_2">
<PriceRequestInformation Retain="true">
<OptionalQua lifiers>
<PricingQualifiers CurrencyCode="USD">
<PassengerType Code="ADT" Quantity="1" />
</PricingQualifiers>
</OptionalQualifiers>
</PriceRequestInformation>
有没有其他方法来设置属性而不修改Reference.cs文件?
答案 0 :(得分:1)
设置RetainSpecified = true将解决问题 [AttributeName]指定的属性用于设置可选的xml属性。