我的web service函数如下:
  
[WebMethod]
public ArrayList GetMessage()
{
    return SMS.GetMessage();
}GetMessage函数是绝对没有问题的,返回的确实是ArrayList,我调用web service的代码如下:SMSService s = new SMSService();
ArrayList list = new ArrayList();
list = s.GetMessage();然后编译的时候就有问题:无法将类型"object[]"隐式转换为"System.Collections.ArrayList"
如果将GetMessage()方法,不作为webmethod,直接写在类里面调用是没有问题的,作为web method就有问题,请大家帮帮忙!大家可以自己写一个方法试试,看看会不会出现这个问题!多谢了

解决方案 »

  1.   

    对于泛型列表,List,IList,ArryList,在webservice调用后都是数组类型SMSService s = new SMSService();
    Object[] list =  s.GetMessage();
      

  2.   

    那么我调用web service中GetMessage()方法,像楼上所说的给Object[],那么我要怎么遍历Object[]里面的内容呢?请指教了!
      

  3.   

    我说的遍历,就是指将Object[]中的内容再取出来,并显示!
      

  4.   

    Web method 的返回值要求必须是可序列化的,arraylist因为当中装的都是object,应该是不能做为返回值类型的.
      

  5.   

    可以先处理Web method 返回的值,把需要的数据转为string类型 然后用连接字符连接起来
    在调用的地方分割
      

  6.   

    WebServiceve中不能返回ArrayList,Web Service就是为了跨平台的,而ArrayList中放的是Object,C#中的对象,别的如Java,PHP等并不认识。
    所以不要返回ArrayList。
      

  7.   

    如果一定要用ArryList的话,只好用for循环,将Object[]里的对像一个个强制转换。
      

  8.   

    要编译Object[]中的元素,可以,
    for(int i=0;i<list.length;i++)
    {
      Object obj=list[i];
     //输入每一个obj,当然如果是对像需要强制转换
     
    }
      

  9.   

    谢谢大家,正如楼上所说的,我返回的还是ArrayList类型,然后 Object[] list = service.GetMessage();
     for (int i = 0; i < list.Length; i++)
     {
           txtMsg.AppendText("\r\n" + list[i].ToString());
     }这样是可以的(当GetMessage()方法如下的时候)public static ArrayList GetMessage()
    {
       ArrayList list = new ArrayList();
       list.Add("aa");
       list.Add("bb");
       return list;
    }这是我写的只放简单的两个字符串的方法,如果换成内容较多、较复杂的方法,就报异常了!
    未处理InvalidOperationException 
    XML文档(1,318)中有错误,"."(十六进制值0x00)是无效的字符
    这显然是某些内容无法转换
      

  10.   

    在vs2005中它对于泛型仅仅支持List<int> 效果好, 连List<String>支持的效果都不好,更何况 List<object> 呢?建议在vs2008上试试