对于WCF中的某些函数,string []未转换为List <string> </string>

时间:2014-12-01 16:34:11

标签: c# wcf datacontract proxy-classes service-reference

我有一个包含许多功能的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转换为字符串[] 。当我查看生成的代理类时,我发现这些函数确实有字符串数组(而不是列表)作为它们的参数。 谁能帮帮我?

1 个答案:

答案 0 :(得分:0)

你应该能够在相关数组的末尾附加扩展方法ToList(),它应该可以工作。如果你不需要列表的功能(而只需要遍历参数),你可以将参数类型改为IEnumerable<string>,而数组和列表都可以用作输入参数。