【问题标题】:WCF operation contract : Optional Parameter Support?WCF 操作合同:可选参数支持?
【发布时间】:2023-04-03 23:19:02
【问题描述】:

我有如下的 WCF 操作合同。我有一个要求,其中这个操作合同应该有一个额外的参数来处理客户端场景。但是我无法更改操作合同签名,因为它也被其他各种客户使用。

据我检查,WCF 中的操作合同不能有可选参数。还有其他建议吗?

Code GetDataElementes(String MyType, String MyUniqueID, out DataTable dTableOut);

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

    WCF 操作可以有可选参数。任何可为空的参数都是可选的。客户端可以传递 null,也可以在发送的 XML 中省略参数。

    此功能对于向后兼容很重要。

    只需创建一个包含所有参数的方法并处理某些参数为空的情况。

    关于参数:创建 DTO 类并返回其实例通常是更好的方式。所有输出参数都成为该类的属性。

    【讨论】:

    • 关于使用 DTO 而不是 out 参数的好建议。 DTO 更适合 SOA 概念 (IMO),而 out 参数是特定于 C# 的,更多的是一般的编程概念。
    【解决方案2】:

    服务上的方法名称必须是唯一的。您可以为方法使用不同的名称,也可以像这样设置OperationContractName 属性:

    [OperationContract(Name = "GetDataElementes")]
    Code GetDataElementes(String MyType, String MyUniqueID, out DataTable dTableOut);
    
    [OperationContract(Name = "GetDataElementes2")]
    Code GetDataElementes();//Or with different parameters
    

    还可以查看this 可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多