Gon*_*alo 0 c# asp.net web-services asmx
我有几个关于Web服务的问题,如果有人能指出我正确的方向,我真的很感激.
在我的类库中,我有两个类:Hotel&RoomType.Hotel类包含RoomType对象的ArrayList.
在我的Web服务中,我有一个GetHotels方法如下:
[WebMethod]
[XmlInclude(typeof(Hotel))]
[XmlInclude(typeof(RoomType))]
public ArrayList GetHotels()
{
return Sistema.GetInstance().GetHotels();
}
Run Code Online (Sandbox Code Playgroud)
类Sistema中的GetHotels(),从数据库中检索信息并返回一个ArrayList.
我不得不使用XMLInclude因为我得到了:
类型酒店(或RoomType)不是预期的.使用XmlInclude或SoapInclude属性指定静态未知的类型
然后在我的Web应用程序中,我有这个代码:
WebService sample = new Service();
ArrayList hotels = service.GetHotels();
Run Code Online (Sandbox Code Playgroud)
这不编译,所以我不得不改为以下代码:
WebService sample = new Service();
object[] hotels = service.GetHotels();
Run Code Online (Sandbox Code Playgroud)
这是我的第一个问题:是否可以返回一个ArrayList,或者每次我必须将结果转换为ArrayList?
知道ArrayList包含Hotel对象,我添加了以下代码:
foreach (Hotel hotel in hotels)
{
...
}
Run Code Online (Sandbox Code Playgroud)
这个编译,但是当我执行时,我收到以下错误:
无法将类型为"System.Xml.XmlNode []"的对象强制转换为"Hotel".
所以,我的下一个问题是:如何将结果转换为Hotel对象并使用它?
无论是ArrayList
也不是特定于.NET任何其他类型将永远不会跨线从Web服务通过.Web服务只讲XML.
有关更多详细信息,请参阅基础:Web服务的工作原理.
在这种特殊情况下,ArrayList
正在被对待object[]
,这意味着:"任意数量的某种对象".在SOAP XML中处理它的唯一方法是将它视为某种XML节点的数组,因此XmlNode[]
.
归档时间: |
|
查看次数: |
9027 次 |
最近记录: |