Visual Studio - Sabre GetReservationRS 未在 Intellisense 中显示旅行项目

Visual Studio - Sabre GetReservationRS not showing travel items in Intellisense

我正在尝试实施新的 GetReservationRQ/RS API,因为旧的 TravelItineraryReadRQ 显然将在 2018 年 12 月停用。

我可以拨打电话并得到回复,并且 XML 有效载荷中存在所有有效的旅行数据,但我无法让 Intellisense 显示项目字段中的项目代理 class。我可能解释不正确,所以我在下面有一些截图。

我已经尝试深入研究由 WSDL 创建的 reference.cs 文件,我确实看到了 GetReservationRQ 和 TravelItinerarReadRQ 之间创建对象模型的方式的一些差异,但我不知道怎么办。

调试模式下的填充对象显示所有有效的预订项:

Intellisense 显示没有任何其他可见成员的项目字段:

编辑 2018 年 7 月 26 日

感谢卡洛斯在下面的回答,我通过实施他的更改使这项工作正常进行。为了后代,这是我的工作代码:

public class GetReservationReq
{

    private GetReservationService service;
    public GetReservationRS response;
    public string xmlResponse;

    public GetReservationReq()
    {
        //parameterless constructor for serializiation
    }

    public GetReservationReq(SessionToken token, string locator)
    {
        //MessageHeader
        MessageHeader mHeader = new MessageHeader();

        PartyId[] pId = { new PartyId() };
        pId[0].Value = "SWS";

        From from = new From();
        from.PartyId = pId;

        To to = new To();
        to.PartyId = pId;

        mHeader.Action = "getReservationRQ";
        mHeader.Service = new Service()
        {
            Value = mHeader.Action
        };
        mHeader.ConversationId = token.conversationID;
        mHeader.CPAId = token.ipcc;
        mHeader.From = from;
        mHeader.To = to;
        mHeader.MessageData = new MessageData()
        {
            Timestamp = DateTime.UtcNow.ToString()
        };

        //Security
        Security sec = new Security();
        //Security1 sec = new Security1();
        sec.BinarySecurityToken = token.securityToken;

        //Service
        service = new GetReservationService();
        service.MessageHeaderValue = mHeader;
        service.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap11;
        service.SecurityValue = sec;

        //create the request
        GetReservationRQ req = new GetReservationRQ();
        req.Version = "1.18.0";
        req.RequestType = "Stateful"; //This indicates that we are looking to pull up an existing PNR
        req.Locator = locator;
        req.ReturnOptions = new ReturnOptions();
        req.ReturnOptions.ViewName = "Full";
        req.ReturnOptions.ResponseFormat = "STL";


        try
        {
            //execute the response
            response = service.GetReservationOperation(req);
            //cast response items to usable Object 
            ReservationPNRB content = (ReservationPNRB)response.Item;
            //testing - iterate through reservation elements and do stuff
            foreach (var segment in content.OpenReservationElements.OpenReservationElement)
            {
                Console.WriteLine(segment.id + " - " + segment.type);
            }
            Console.Read();

            //serialize the response for logging if necessary
            xmlResponse = Serializer.toXML(response);


            //serialize response for logging if necessary
            using (StreamWriter myWriter = new StreamWriter(@"C:\SABRE_DATA\TMP\xmlItin.txt", true))
            {
                XmlSerializer mySerializer = new XmlSerializer(typeof(GetReservationRS));
                mySerializer.Serialize(myWriter, response);
                StringWriter myStringWriter = new StringWriter();
                mySerializer.Serialize(myStringWriter, response);
                xmlResponse = myStringWriter.ToString();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            throw;
        }
    }
}

如您在上一个打印屏幕中所见,项目 属性 是对象类型。这意味着您需要将其转换为您期望的特定类型。

要在 属性 中找到可以 return 编辑的有效类型,您需要转到 reference.cs,在那里您会看到 [=17] 的顶部=](作为属性)API 可以 return 在此 属性.

中的有效对象类型