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
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;