zoukankan      html  css  js  c++  java
  • WCF Basic(1)操作重载

         现网上关于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
       }
  • 相关阅读:
    day_2:re
    day_1:Requests
    CTF-PHP漏洞总结(持续更新)
    BugkuCTF-Web- flag在index里 80
    中缀表达式转换为后缀表达式(C语言实现)
    逆波兰计算器1.0 (c语言 栈实现)支持小数计算
    二进制数转化为十进制数(栈的学习练习)
    数据结构:统计学生信息(c++动态链表完成)
    数据结构:删除数组中的元素(c++)链表形式
    约瑟夫环 (c++循环链表方法书写)
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1809589.html
Copyright © 2011-2022 走看看