操作重载
注意:WCF是不支持重载的,如果硬是写成重载的话,会抛出异常 InvalidOperationException,但是我们可以模拟!

原C#中的方法重载:

interface ICalculator
...{
   int Add(int arg1,int arg2);
   double Add(double arg1,double arg2);
}
在WCF我们通过手动启用操作重载:

1.使用 [OperationContact] 特性的 Name 属性,为操作指定别名:

[ServiceContract]
interface ICalculator
...{
   [OperationContract(Name = "AddInt")]   //用Name 属性指定别名 AddInt
   int Add(int arg1,int arg2);
   [OperationContrace(Name = "AddDouble")]
   double Add(double arg1,double arg2);
}

//------------------- 客户端会生成这样的代码 ----------------
[ServiceContract]
public interface ICalculator
...{
   [OperationContract]
   int AddInt(int arg1,int arg2);                                               //会套用服务契约的方法别名
  
   [OperationContract]
   double AddDouble(double arg1,double arg2);                  //会套用服务契约的方法别名
}

public partial class CalculatorClient : ClientBase<ICalculator>,ICalculator
...{
   public int AddInt(int art1,int arg2)                                      //会套用服务契约的方法别名

...{
      return Clannel.AddInt(arg1,arg2);
   }
   public double AddDouble(double arg1,double arg2)        //会套用服务契约的方法别名

...{
      return Channel.AddDouble(arg1,arg2);
   }

}
 
注:虽然客户端生成了可以使用的代理契约,但我们还是要进行修改,使客户端代码支持操作重载。

2.修改客户端代码

[ServiceContract]
public interface ICalculator
...{
   [OperationContract(Name = "AddInt")]           //客户端指定与服务端相同的操作别名,而方法名为重载
   int Add(int arg1,arg2);
  
   [OperationContract(Name = "AddDouble")]    //客户端指定与服务端相同的操作别名,而方法名为重载
   double Add(double arg1,double arg2);
}

public partial 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);
   }
}

这样,我们就可以通过重载调服务器方法了:

CalculatorClient proxy = new CalculatorClient();

int result1 = proxy.Add(1 , 2);

double result2 = proxy.Add(1.1 , 2.2);

proxy.Close();
文章出处:http://www.diybl.com/course/4_webprogram/asp.net/asp_netshl/2008429/111998.html

转载于:https://www.cnblogs.com/dudu837/archive/2009/08/21/1551231.html

WCF中的方法重载 实现相关推荐

  1. java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...

    [单选题]若int x;且有下面的程序片断,则输出结果是() . for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "** ...

  2. scala 方法重载_Scala中的方法重载

    scala 方法重载 Scala方法重载 (Scala method overloading) Method overloading is a method that is redefined in ...

  3. [转载] Java Challengers#1:JVM中的方法重载

    参考链接: Java中自动装箱和扩展的方法重载 欢迎来到新的Java Challengers博客!本博客致力于挑战Java编程中的概念.掌握它们,你将成为一名技术娴熟的Java程序员. 本博客中的技术 ...

  4. java方法重载和重载方法_Java中的方法重载

    java方法重载和重载方法 The concept of Method Overloading in Java is where a class can have multiple methods w ...

  5. python方法重载_关于类:如何在Python中使用方法重载?

    我尝试在python中实现方法重载: class A: def stackoverflow(self): print 'first method' def stackoverflow(self, i) ...

  6. mybatis接口中的方法重载_MyBatis底层实现原理: 动态代理的运用

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:祖大俊 my.oschina.net/zudajun/blog/666223 一日小 ...

  7. TS中的方法重载,函数重载,构造器重载

    什么叫重载 名字相同 ,参数类型不同 方法重载 方法重载在类中定义多个同名的方法,但是每一个同名的方法要求不同数据类型和不同参数 下面来实现一个方法重载 以ArrayList 为例 可以查看数据 可以 ...

  8. Java中的方法重载定义详解

     方法重载    方法重载的要求: • 在同一个类中,定义了多个同名的方法,但每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系 • 简单来说:同一个类中,方法名相同,参数不同 参 ...

  9. JAVA中的方法重载(Overloading)和方法重写(Overriding)

    一. 方法重载 方法重载:当同一个类中有两个或两个以上相同命名的方法. 当方法重载时,必须要保证每两个方法之前的方法签名(Signature)是不同的.这意味着这两个方法有着不同数量的参数或者参数的类 ...

最新文章

  1. systemd进程管理工具实战教程
  2. 如何在Leangoo中创建企业
  3. oracle 语法分析表,Oracle 语句优化分析说明
  4. 如何有效地连接字符串
  5. shiro+redis实现session共享
  6. Elasticsearch-PHP实战操作
  7. 记一次mongoDB-@Document(collection = “XXX“)配置的探索
  8. 数字黑洞java_[蓝桥杯][算法提高VIP]数字黑洞 (Java代码)
  9. QT的QSplineSeries类的使用
  10. iOS开发UI篇—九宫格坐标计算
  11. 阿里云java mysql环境_阿里云搭建centos java mysql nginx环境
  12. 物理层协议有哪四大特性
  13. 浅谈Java中的栈和堆
  14. vs调用matlab功能,vs调用matlab
  15. mysqldump备份所有数据库,恢复单个库的场景预演
  16. 4.1 Zend_Config
  17. iis7.5 php isapi映射,IIS7、iis7.5让ISAPI扩展DLL执行的方法
  18. edittext 内容长度
  19. 2018PS cc版本最新最实用学习笔记
  20. 概念模型与关系模型和关系规范化

热门文章

  1. Python多篇新闻自动采集
  2. 商品pid是什么意思_0基础搞懂自动驾驶传统算法与深度学习的鸿沟-PID控制算法与MLP优化方法...
  3. OpenCV imread()函数
  4. 以实例让你真正明白mapreduce---填空式、分布(分割)编程
  5. nodejs 本地php服务器,Nodejs搭建本地http服务器
  6. 怎样从frm ibd恢复mysql_怎样从frm,ibd恢复MYSQL
  7. 产品经验谈:B端产品需求的3个层次,你都了解吗?
  8. 产品运营实战系列-产品设计从0到1全流程:以优惠券为例
  9. php置顶文章,zblogphp调用置顶文章的教程
  10. html模块殃射,【Web前端问题】webpack打包后,module模块中的函数无法在html标签的事件中调用?...