C# 动态生成的代码中的参数序列不正确

C# 动态生成的代码中的参数序列不正确,c#,wcf,dynamic-proxy,C#,Wcf,Dynamic Proxy,通过使用,我试图动态创建和使用WCF服务。我已宣布签订如下合同: [OperationContract] long GetStrings(string sinput, int n, out List<String> lstStrings); 这些类型的名称如下所示: strType = "String[]&" strType1 = "String" strType2 = "int" 我的问题是: 为什么参数的顺序会发生变化,即定义为“输出”的参数比其他参数先出现 如何更正

通过使用,我试图动态创建和使用WCF服务。我已宣布签订如下合同:

[OperationContract]
long GetStrings(string sinput, int n, out List<String> lstStrings);
这些类型的名称如下所示:

strType = "String[]&"
strType1 = "String"
strType2 = "int"
我的问题是:

  • 为什么参数的顺序会发生变化,即定义为“输出”的参数比其他参数先出现
  • 如何更正该方法的参数顺序
  • 如何将参数设置为列表而不是字符串[]

  • 提前感谢。

    在WCF中使用out参数不是很习惯。通常,最好将两条返回信息(long和sequence)封装在一个响应类中

    但是,如果出于某种原因确实需要out参数,那么我认为当bodystyle为“wrapped”(或者可能为“wrappedresponse”)时支持它,但当默认为“bare”时不支持它

    我认为,建议客户机代码将获得一个列表表明了对WCF和SOAP如何工作的误解。客户端代理是通过读取服务生成的WSDL来实现的。WSDL没有指定C#类型,它指定XML模式类型。XML模式中的一个序列由一个C#数组表示,它就是这样。如果需要C#列表,则需要将原始代理封装在自己设计的适配器类中

    strType = "String[]&"
    strType1 = "String"
    strType2 = "int"