【问题标题】:WCF method parameter orderWCF 方法参数顺序
【发布时间】:2013-05-03 04:18:27
【问题描述】:

在我的 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);
}

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

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我相信这是代理生成代码的限制。您必须在客户端编辑生成的代理代码才能更改此设置。

    【讨论】:

      【解决方案3】:

      从技术上讲,它是忠实的。如果你深入研究 Reference.cs,你会发现当代理调用你的服务时,调用是一样的。但是,调用服务的代理或“包装器”决定以不同的方式“包装”您的服务调用。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-14
        • 2012-03-06
        • 1970-01-01
        • 2020-03-16
        • 1970-01-01
        相关资源
        最近更新 更多