C# WCF运营合同:可选参数支持?

C# WCF运营合同:可选参数支持?,c#,wcf,C#,Wcf,我有一份WCF运营合同,如下所示。我有一个要求,这个操作合同应该有一个额外的参数来处理客户场景。但我不能更改操作合同签名,因为它也被其他客户使用 据我所知,WCF中的操作合同不能有可选参数。还有其他建议吗 Code GetDataElementes(String MyType, String MyUniqueID, out DataTable dTableOut); 服务上的方法名称必须是唯一的。您可以为方法使用不同的名称,也可以像这样设置OperationContract的Name属性: [

我有一份WCF运营合同,如下所示。我有一个要求,这个操作合同应该有一个额外的参数来处理客户场景。但我不能更改操作合同签名,因为它也被其他客户使用

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

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

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

[OperationContract(Name = "GetDataElementes")]
Code GetDataElementes(String MyType, String MyUniqueID, out DataTable dTableOut);

[OperationContract(Name = "GetDataElementes2")]
Code GetDataElementes();//Or with different parameters

还可以查看一些可能有用的信息。

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

此功能对于向后兼容性非常重要

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


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

关于使用DTO而不是
out
参数的好建议。DTO更适合SOA概念(IMO),而
out
参数是特定于C#的,通常更像是一个编程概念。