Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 服务引用和列表/数组类型_C#_.net_Asp.net - Fatal编程技术网

C# 服务引用和列表/数组类型

C# 服务引用和列表/数组类型,c#,.net,asp.net,C#,.net,Asp.net,我有一个问题,我真的需要以任何方式解决(更改数据类型是一个选项) 假设: 计划和服务均在VS2008中完成 我可以完全控制程序和服务 我有一个程序正在向服务引用传递信息的“列表” 例如: 程序段: IList<string> XMLList = null; XMLList = new List<string>(); // fill my list up here... mostly just an "array" of xml-based strings strin

我有一个问题,我真的需要以任何方式解决(更改数据类型是一个选项)

假设:

  • 计划和服务均在VS2008中完成
  • 我可以完全控制程序和服务
  • 我有一个程序正在向服务引用传递信息的“列表”
  • 例如:

    程序段:

    IList<string> XMLList = null;
    XMLList = new List<string>();
    
    // fill my list up here...  mostly just an "array" of xml-based strings
    
    string[] arrayToSend = new string[XMLList.Count];
    arrayToSend = XMLList.ToArray<string>();
    
    string results = DataFeedService.ProcessXMLBatch(arrayToSend);
    
    问题: 它不认为我在服务中创建的字符串[]是相同类型的。 字符串数组。它将其转换为#名称空间的类型。#servicename.ArrayOfString


    此代码当前不会编译。我四处寻找过传递列表或泛型的替代方法,但我一直遇到障碍。

    考虑将代码更改为使用
    列表而不是
    IList
    (我知道这是您实际使用的,但声明变量本身)。
    List
    类提供了一个显式的
    ToArray()
    函数,该函数比您在代码中使用的
    可枚举.ToArray
    扩展方法更快。这个可能也会解决你的问题,但我不确定这一点

    而且,您不需要

    string[] arrayToSend = new string[XMLList.Count];
    
    就宣布它是

    string[] arrayToSend;
    
    您已经使用
    ToArray()
    调用为其赋值;不需要事先创建另一个


    编辑为什么不实例化并填充在服务引用命名空间中创建的
    ArrayOfString
    类?它将像一个
    列表一样工作(事实上,我相信它继承了它)。将其用作
    xmlslist
    的类型,只需将
    xmlslist
    变量直接发送到函数。

    如果将
    WebMethod
    更改为接受
    列表而不是
    字符串[]
    ,并传递适当的类型,则应该可以工作。根据我的经验,ASP.NET服务似乎更喜欢这样

    另外,不要忘记确保您的服务引用是最新的,以便正确创建服务包装器类型,以便您的代码与之交互

    更新
    您是否尝试过在调用WebMethod时实际创建并填充
    ArrayOfString
    类型,而不是使用
    string[]

    我已经实现了您的建议,并且基本上收到了相同的错误:string[]arrayToSend;ArrayToArray=XMLList.ToArray();字符串结果=DataFeedService.ProcessXMLBatch(arrayToSend);产生:错误4参数“1”:无法从“字符串[]”转换为“FileFeedParser.DataFeedService.ArrayOfString”E:\tlatourelle pc external\dev\AmazonDataFeed\FeedFileParser\FeedFileParser\Program.cs 223 86 FeedFileParserDin看不到您的答案,Jeff。你已经移到顶部,不确定问题是什么。实际上,我在编辑中做了这个建议。我在服务引用中填充了ArrayOfString对象。然后我将此信息传递给服务部门,服务部门接受了此信息。谢谢,TomI也尝试过这种方法,并且还收到了ArrayOfString错误,如上面的string[]示例所述。我还确保每次更改服务时,我的参考资料都是最新的。
    string[] arrayToSend;