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
       }
  • 相关阅读:
    4.使用webpack-dev-server工具实现自动打包编译的功能
    3.使用webpack配置文件webpack.confg.js配置打包文件的入口和出口
    2.webpack最基本的使用方式
    启动nginx 80端口被占用:tcp 0 0 127.0.0.1:80 127.0.0.1:34932 TIME_WAIT
    template标签就相当于React中的fragment
    初窥AST
    npm 中的 --
    你不知道的环境变量(转)
    非捕获分组 正向预查 与反向预查
    border-radius 如何计算
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1809589.html
Copyright © 2011-2022 走看看