WCF Basic(1)-操作重载

本文探讨了WCF服务接口中的方法重载问题,包括如何通过OperationContract的Name属性实现方法别名设置,以及客户端如何调用这些带有别名的方法。文章提供了具体的代码示例,帮助读者理解并应用。

     现网上关于WCF所谓是很多,但好书很少.Programming WCF Services 应该算是一本非常好的书。结合书和代码总结一下.

一.服务器端操作重载

1.接口本身支持重载

interface ICalculator
 {
     int Add(int arg1, int arg2);
     double Add(double arg1, double arg2);
 }


2.若将此接口作为服务契约,WSDL规定方法不可重载

以下定义是错误的

//Invalid contract definition:
 [ServiceContract]
 interface ICalculator
 {
     [OperationContract]
     int Add(int arg1, int arg2);
 
     [OperationContract]
     double Add(double arg1, double arg2);
 }

3.可以用OperationContract的Name属性设置方法的别名

[ServiceContract]
 interface ICalculator
 {
     [OperationContract(Name = "AddInt")]
     int Add(int arg1, int arg2);
 
     [OperationContract(Name = "AddDouble")]
     double Add(double arg1, double arg2);
 }

这样客户端就会生成AddInt和AddDouble方法.客户端会生成如下代码

[ServiceContract]
   interface ICalculator
   {
       [OperationContract]
       int AddInt(int arg1, int arg2);
 
       [OperationContract]
       double AddDouble(double arg1, double arg2);
   }
   class CalculatorClient : ClientBase<ICalculator>, ICalculator
   {
       public int AddInt(int arg1, int arg2)
       {
           return Channel.AddInt(arg1, arg2);
       }
       public double AddDouble(double arg1, double arg2)
       {
           return Channel.AddDouble(arg1, arg2);
       }
       //Rest of the proxy
   }


最好是避免这种写法,直接修改方法名

二.客户端操作重载

也可以在客户端指定别名

[ServiceContract]
   interface ICalculator
   {
       [OperationContract(Name = "AddInt")]
       int Add(int arg1, int arg2);
 
       [OperationContract(Name = "AddDouble")]
       double Add(double arg1, double arg2);
   }
 
   class CalculatorClient : ClientBase<ICalculator>, ICalculator
   {
       public int Add(int arg1, int arg2)
       {
           return Channel.Add(arg1, arg2);
       }
       public double Add(double arg1, double arg2)
       {
           return Channel.Add(arg1, arg2);
       }
       //Rest of the proxy
   }

转载于:https://www.cnblogs.com/Clingingboy/archive/2010/08/26/1809589.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值