WCF方法参数顺序

时间:2013-05-02 19:28:27

标签: c# wcf web-services visual-studio

在我的WCF Web服务中,我有以下界面:

[ServiceContract]
public interface ITestService
{
    [OperationContract]
    void TestMethod(out int param1, out int param2);
}

当我在客户端添加服务引用时,生成的客户端方法与原始签名不正确,它将out参数之一映射为方法返回。我必须这样称呼它:

using (var client = new TestServiceClient())
{
    int param2;
    int param1 = client.TestMethod(out param2);
}

有什么方法可以“强制”生成的代理忠实于原始方法签名吗?

3 个答案:

答案 0 :(得分:2)

我会考虑更改您的服务以返回包含2个属性的数据结构,并从您的操作中返回它,而不是使用输出参数。

答案 1 :(得分:1)

我认为这是代理生成代码的限制。您必须在客户端中编辑生成的代理代码才能更改此内容。

答案 2 :(得分:0)

从技术上讲,它是忠实的。如果您深入了解Reference.cs,您将看到当代理呼叫您的服务时,呼叫是相同的。但是,调用服务的代理或“包装器”决定以不同方式“包装”您的服务调用。

使代理本身保持相同签名的唯一方法是自己编写。这与人们在反映DLL时遇到的问题完全相同。当然你可以反映它并获得“源代码”,但反映的代码将与原始源不同,尽管功能将是相同的。