我有一个包含许多功能的WCF服务。其中一些包含List<string>
个参数。 e.g
[ServiceContract]
public interface IQueriesService
{
[OperationContract]
DataTable ExecuteSimpleQuery(List<string> sel, List<string> fr, List<string> whereCells, List<string> types, List<string> whereOps, List<string> whereValues, List<string> logOp, int cultureLCID);
}
public class UniverService : IQueriesService
{
public DataTable ExecuteSimpleQuery(List<string> sel, List<string> fr, List<string> whereCells, List<string> types, List<string> whereOps, List<string> whereValues, List<string> logOp, int cultureLCID)
{
DataTable dt = new DataTable();
...
return dt;
}
}
simpleQ.Select = simpleQ.Select.Distinct().ToList();
simpleQ.From = simpleQ.From.Distinct().ToList();
DataTable dt = svc.ExecuteSimpleQuery(simpleQ.Select, simpleQ.From, simpleQ.WhereCell, simpleQ.Type, simpleQ.WhereOp, simpleQ.WhereValue, simpleQ.LogicOperation, Thread.CurrentThread.CurrentUICulture.LCID);
其中simpleQ.Select,From,...属于List<string>
当我将服务引用添加到其他项目时,在“服务引用设置”窗口中,我将集合类型从System.Array
更改为System.Collections.Generic.List
。
我的问题是,上述转换适用于我的某些功能,而不适用于其他功能。我的意思是在添加服务引用并重建它后,我收到一个错误
无法从List转换为字符串[] 。当我查看生成的代理类时,我发现这些函数确实有字符串数组(而不是列表)作为它们的参数。
谁能帮帮我?
答案 0 :(得分:0)
你应该能够在相关数组的末尾附加扩展方法ToList()
,它应该可以工作。如果你不需要列表的功能(而只需要遍历参数),你可以将参数类型改为IEnumerable<string>
,而数组和列表都可以用作输入参数。