WCF中的方法重载 实现

操作重载
注意: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux重新安装ssh服务器,Linux平台ssh服务器安装方法

玩蛇网推荐图文教程&#xff1a;python 列表关于SSH是什么及SSH的作用这里不做介绍&#xff0c;如果要了解可以自行面度哦。下面我就就开始以Linux平台为例&#xff0c;讲讲Linux平台ssh服务器安装方法。以下方法中都是以root用户权限去操作&#xff0c;大家在真实操作中&#…

linux重启后root密码错误,Linux技巧| 解决Debian Root密码忘记的问题

Debian Root密码忘记开机 grub 菜单下进入单用户模式进行修改密码/修改系统文件。解决过程注&#xff1a;本教程适用于 Debian 7 8 91. 首先。重启一下系统。在开机 grub 内核选择菜单那里&#xff0c;迅速按“e”。2. 将光标移动到“linux”开头的那一行&#xff0c;将原来的“…

python缩进tab还是空格_Python码农有话说:写代码时应该缩进使用 tab还是空格?...

对于程序员来说&#xff0c;其实Tab和空格远远不只是“立场”问题那么简单。在不同的编辑器里tab的长度可能不一致&#xff0c;所以在一个编辑器里用tab设置缩进后&#xff0c;在其它编辑器里看可能缩进就乱了。空格不会出现这个问题&#xff0c;因为空格就占一个字符的位置。大…

SilverLight学习笔记--Silverlight中WebService通讯

本文我们学习如何在Silverlight中使用WebService进行通讯。 新建项目Silverlight应用程序&#xff0c;命名为&#xff1a;SLWebService。在服务器端我们需要做两项目工作: 1、在Web项目中新建一个类Person&#xff0c;我们将在WebService中返回它的实例化对象。Person类定义如下…

linux怎么修改sftp默认端口,转:linux 修改sftp服务默认提供者sshd的session timeout

NAT firewalls like to time out idle sessions to keep their state tables clean and their memory footprint low.NAT防火墙喜欢对空闲的会话进行超时处理&#xff0c;以确保它们状态表的干净和内存的低占用率。Some firewalls are nice, and let you idle for up to a day …

导出文件_一招解决PDF文件导出图片

将PDF文件保存为高清图片是经常需要进行的保存方式之一&#xff0c;因为PDF文件虽然安全性高&#xff0c;但是相比较图片而言&#xff0c;还是不易进行查看的&#xff0c;那么如何将PDF文件导出图片呢&#xff1f;以前也了解过很多方法&#xff0c;不过最好的当然不是截图了。虽…

如何在 C# 中用 SharpZipLib 进行 ZIP 压缩与解压(转)

转自&#xff1a;http://www.cftea.com/c/2008/04/A1FQ34RYSYNLFT47.aspSharpZipLib 是一个免费的组件&#xff0c;可以利用它对 ZIP 等多种格式进行压缩与解压。 本地下载 SharpZipLib 0.85.4&#xff1b; 本地下载 SharpZipLib 0.85.4 源文件与示例&#xff1b; 本地下载 Sha…

linux缓存文件用户权限错误,CVE-2019-11244漏洞到底该如何修复?--关于缓存文件权限设置...

2019年5月&#xff0c;Kubernetes社区(后面简称”社区“)修复了标号为CVE-2019-11244的安全漏洞&#xff0c;这个修复方案似乎并不彻底&#xff0c;于是有人发布Issue对此提出异议&#xff0c;希望提供进一步修复方案。虽然Kubernetes已经非常安全&#xff0c;但对于一些安全标…

用python计算ln函数_python-含参函数

#!/usr/local/bin/python3# -*- coding:utf-8 -*-#----------函数位置参数和关键字参数----------def test(x,y): #此处的 x&#xff0c;y为形参print(x)print(y)test(1,2) #位置参数调用-此处的 1&#xff0c;2为实参&#xff0c;且与形参一一对应test(y2,x1) #关键字调用&…

ASP.NET MEMBERSHIP的XML配置

做了一个MEMBERSHIP的测试&#xff0c;先记下来&#xff0c;以备后用&#xff01;JAVAEYE网站是不是被人攻击了啊。。怎么打不开。。晕。。我有好多文章都在里面啊。。都没有备份的。。。 <connectionStrings><add name"conn"connectionString"server.…

高中数学40分怎么办_2019年第35届全国高中数学联赛试题及参考答案

2019年第35届全国高中数学联赛考试已结束&#xff0c;本文收集整理本次数学联赛的试题和参考答案&#xff0c;以供大家了解参考。本次数学联赛由全国高中数学联赛组委会统一命题&#xff0c;共分为一试和二试。一试时间为80分钟&#xff0c;包括8道填空题(每题8分)和3道解答题(…

linux 关机 日志,centos7 异常关机了,怎么查看系统的异常日志?

centos7 异常关机了&#xff0c;怎么查看系统的异常日志?crash中也没有dump的文件.这是messages日志:Feb 26 11:14:03 moon systemd-logind: Removed session 11.Feb 26 11:14:56 moon systemd: Created slice user-0.slice.Feb 26 11:14:56 moon systemd: Starting Session 1…

一个把图片保存到SQL数据库的工具

因公司的业务需要,会把很多图片保存到数据库中.因此做了一个很简单的工具,把图片保存到SQL数据库中.1.可以连接到不同服务器上的SQL数据库,可以选择操作各个表;2.可以指定保存到数据库的图片格式(JPG or BMP);3.可以用windows图片和传真查看器预览图片.下载地址:一个把图片保存…

redis 哨兵_Redis哨兵机制的原理介绍

php中文网最新课程每日17点准时技术干货分享本篇文章给大家带来的内容是介绍Redis的哨兵机制&#xff0c;让大家了解哨兵机制的原理和如何实现。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。概述Redis的复制有一个缺点&#xff0c;当主…

linux 编写完程序吗,linux下编写C++程序

注&#xff1a;本文写的内容全部在ubuntu12.04下完成。要在linux下写C程序&#xff0c;要懂的一点编译的知识。下面介绍一下。源代码->预处理器(负责将代码补充)->汇编程序(生成汇编语言)-> 目标程序(生成二进制文件)->链接器(链接文件)->可执行程序(生成执行程…

BoooLee pyretoolkit -- 一个基于python re模块的在线正则表达式测试工具

为了学习python re模块正则表达式&#xff0c;寻找了一些正则表达式工具&#xff0c;除了komodo捆绑的rx toolkit外&#xff0c;其他的测试工具都是基于.net或其他引擎的&#xff0c;语法上多少有点出入。 干错自己写一个&#xff0c;用了2天时间&#xff0c;python re googl…

随机生成从大到小排序python_随机快速排序(使用Python描述)

title代码复制自随机快速排序的实现-夜雨最萌.和快速排序一样呀&#x1f602;随机快速排序与快速排序的思路一样,差异就是取主元之前,随机快速排序多了一个步骤:而随机快速排序是随机取得一个元素,但是又会与最后一个元素交换位置.取得主元的下标位置实际上还是最后一个下标.快…

linux守护进程fifo,linux守护进程配置文件

syslogd 是一种守护进程&#xff0c;它负责记录(写到磁盘)从其它程序发送到系统的消息。这个服务尤其常被某些守护进程所使用&#xff0c;这些守护进程不会有另外的方法来发出可能有问题存在的信号或向用户发送消息。1.文件格式/etc/syslog.conf是syslog守护程序的配置文件.sys…

【大数据】NiFi 的基本使用

NiFi 的基本使用 1.NiFi 的安装与使用1.1 NiFi 的安装1.2 各目录及主要文件 2.NiFi 的页面使用2.1 主页面介绍2.2 面板介绍 3.NiFi 的工作方式3.1 基本方式3.2 选择处理器3.3 组件状态3.4 组件的配置3.4.1 SETTINGS&#xff08;通用配置&#xff09;3.4.2 SCHEDULING&#xff0…

Asp.net页面事件引发后台程序处理原理【转】

以前在ASP中&#xff0c;不存在事件处理&#xff0c;传统的处理方法是通过隐藏文本框来提交不同的参数进行区别用户的不同动作&#xff0c;或则用不同的URL查询字符串来区别。ASP.NET中出现了事件处理&#xff0c;让开发人员区分用户动作方便并简单了许多。 实际上&#xff0c;…