2009-10-21 83 views
0

我试图通过List<UploadQueue>类型的列表对象为WCF SOAP相同的参数类型的 方法,我得到的错误:无法从“列表<T>”转换为“T []”

Cannot Convert from 'System.Collections.Generic.List' to 'WebAPI.Upload.UploadQueue[]'

因为我的WCF方法的(如下图)参数类型为List<UploadQueue>我不明白这一点:

IService.DoUpload(List<UploadQueue> request) 

这里是所谓的“DoUpload”返回上面的错误代码。

List<UploadQueue> results = new List<UploadQueue>(); 
    HttpPostedFile m_objFile = default(HttpPostedFile); 
    int m_objFlag = default(int); 
    Guid m_objGuid = Guid.NewGuid(); 
    DateTime m_objDate = DateTime.Now; 

    try 
    { 
     if (Request.Files.Count > 0) 
     { 
      for (var j = 0; i <= (Request.Files.Count - 1); j++) 
      { 
       m_objFile = Request.Files[j]; 

       if (!(m_objFile == null | string.IsNullOrEmpty(m_objFile.FileName) | m_objFile.ContentLength < 1)) 
       { 
        results.Add(new UploadQueue(
         m_objGuid, 
         m_objFlag, 
         m_objFile.ContentLength, 
         m_objFile.FileName, 
         m_objDate) 
        ); 

       } 

      } 
     } 

    } 
    catch (Exception ex) 
    { 
     //handle error 
    } 

    retParam = upload.DoUpload(results); 

想法?谢谢。

回答

13

在您的客户端项目中,您需要右键单击服务参考并选择“配置服务参考”。在配置屏幕上的数据类型部分,您需要将集合类型设置为System.Collections.Generic.List而不是System.Array。

+0

不错的一个。谢谢。 – 2009-10-21 20:12:46

+0

不客气。我花了一段时间才弄清楚了。 – 2009-10-21 23:10:42

+0

谢谢你 - 帮助我! – Tommy 2014-02-10 15:35:27

1

尝试执行results.ToArray()。这可能会解决它。

upload.DoUpload(results.ToArray()); 

问题是,肥皂服务说它想要一个对象数组,而不是一个列表。从WSDL构建代理类时,它将其转换为它可以满足作为数组的服务需求的最基本对象。

1
retParam = upload.DoUpload(results.ToArray()); 

...或类似的。

相关问题