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
       }
  • 相关阅读:
    什么是理想?
    leetcode 62. 不同路径-动态规划及优化,双100%
    使用双指针暴力解决力扣28题《实现 strStr()》
    使用双指针解决力扣27题《移除元素》
    SQL SERVER 数据库日志已满时清理日志的方法
    修改git提交的名字和邮箱
    React Native运行出现Could not find "iPhone X" simulator
    eosio 编译与部署
    恢复经常写博客的习惯
    MAC OS系统替换homebrew使用阿里云或中科大的镜像源
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1809589.html
Copyright © 2011-2022 走看看