0
我有一个XSD文件,它决定了我的引擎可以与其他插件(使用不同语言编写,如Delphi)通信的模式。我使用.Net提供的XSD工具从XSD文件中获取C#类。asp.net web服务返回空对象
插件返回一个XML字符串,然后我将其反序列化到由XSD工具生成的类中。
一切都很好,直到那里,但是当我通过Web服务传递到客户端的类的数组时,该数组包含一个元素,这是很好,但该对象中的每个字段为null或设置为其默认值。
任何想法为什么会发生这种情况?
我也尝试发送虚拟数据,而不是通常从插件检索数据,但仍然返回的对象是空的。
这是由XSD工具生成的类:
using System.Xml.Serialization;
/// <remarks/>
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public class BookingQueryResponse {
/// <remarks/>
public int ErrorCode;
/// <remarks/>
public string ErrorString;
/// <remarks/>
public int BookingQueryID;
/// <remarks/>
public int DestinationID;
/// <remarks/>
public string DestinationName;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(DataType="date")]
public System.DateTime ArrivalDate;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(DataType="date")]
public System.DateTime DepartureDate;
/// <remarks/>
public int CurrencyID;
/// <remarks/>
public string CurrencyISO;
/// <remarks/>
public string CurrencySymbol;
/// <remarks/>
public int LangID;
/// <remarks/>
public string LangCode;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("HotelQuotePackages")]
public HotelQuotePackage[] HotelQuotePackages;
}
/// <remarks/>
public class HotelQuotePackage {
/// <remarks/>
public string PackageGuid;
/// <remarks/>
public string PackageName;
/// <remarks/>
public string PluginGuid;
/// <remarks/>
public int ResortID;
/// <remarks/>
public string ResortName;
/// <remarks/>
public int HotelID;
/// <remarks/>
public string HotelName;
/// <remarks/>
public int HotelRatingID;
/// <remarks/>
public string HotelRatingName;
/// <remarks/>
public string HotelNarrative;
/// <remarks/>
public System.Double MapLongitude;
/// <remarks/>
public System.Double MapLatitude;
/// <remarks/>
public string HotelRemark;
/// <remarks/>
public string OfferText;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("HotelRoomQuotes")]
public HotelRoomQuote[] HotelRoomQuotes;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("HotelImages")]
public HotelMediaImage[] HotelImages;
}
/// <remarks/>
public class HotelRoomQuote {
/// <remarks/>
public int RoomNumber;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("RoomQuotes")]
public RoomQuote[] RoomQuotes;
}
/// <remarks/>
public class RoomQuote {
/// <remarks/>
public string Guid;
/// <remarks/>
public int AdultPax;
/// <remarks/>
public int ChildPax;
/// <remarks/>
public int InfantPax;
/// <remarks/>
public string RoomTypeName;
/// <remarks/>
public string RoomTypeDesc;
/// <remarks/>
public int BoardBasisID;
/// <remarks/>
public string BoardBasisName;
/// <remarks/>
public System.Double CostForStay;
/// <remarks/>
public string Remarks;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("DayRates")]
public DayRate[] DayRates;
}
/// <remarks/>
public class DayRate {
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(DataType="date")]
public System.DateTime Date;
/// <remarks/>
public System.Double Rate;
}
/// <remarks/>
public class HotelMediaImage {
/// <remarks/>
public string HotelImage;
/// <remarks/>
public int ImageTypeID;
/// <remarks/>
public string ImageType;
}
,只是为了测试Web服务,我所做的是这样的:
return return new BookingQueryResponse[1] { new BookingQueryResponse() { ArrivalDate = DateTime.Now.Date, DestinationName = "Malta" } };
它听起来像在xml中的不匹配和类型......很难说没有具体细节虽然(即C#和XML) –
看看你的对象名称空间(而不是c#命名空间,但xml名称空间指定的属性XmlType )在你生成的类和你的xml文件中,它们必须匹配! –
@Marc Gravell我编辑了这个问题,包括生成的c#类,如果它有帮助。 – Jonny