Web服务与方法重载

在Web服务中,经常需要将一些方法暴露给外界使用。这些方法被称为WebMethods。除了WebMethods之外,Web服务还可以拥有其他普通方法,就像任何其他类一样。由于Web服务本质上是一个类,它可以利用面向对象编程(OO)的所有特性,比如方法重载。但是,要在WebMethods上使用这个特性,需要做一些额外的工作,本文将对此进行解释。

创建WebMethods

让创建一个简单的Web服务,它包含以下重载的方法:

public int AddNumbers(int a, int b) public int AddNumbers(int a, int b, int c) public decimal AddNumbers(decimal a, decimal b)

这三个方法都返回添加后的数值,只是数值类型不同。现在,将这些方法标记为WebMethods。为了实现这一点,需要将[WebMethod]属性应用于公共方法。

[WebMethod] public int AddNumbers(int a, int b) { return a+b; } [WebMethod] public int AddNumbers(int a, int b, int c) { return a+b+c; } [WebMethod] public decimal AddNumbers(decimal a, decimal b) { return a+b; }

这样编译是没有问题的。但是,如果在浏览器中运行这个Web服务,会得到一个错误,提示AddNumbers()方法使用了相同的消息名称'AddNumbers',并建议使用WebMethod的MessageName属性来解决这个问题。

添加MessageName属性

按照以下方式添加MessageName属性到WebMethod属性中:

[WebMethod] public int AddNumbers(int a, int b) { return "a+b"; } [WebMethod (MessageName="AddThreeNumbers")] public int AddNumbers(int a, int b, int c) { return a + b + c; } [WebMethod (MessageName="AddDecimal")] public decimal AddNumbers(decimal a, decimal b) { return a+b; }

现在重新编译Web服务,并在浏览器中运行。可以看到,第一个方法显示为AddNumbers,而对于第二和第三个方法,通过设置MessageName属性的别名显示出来。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485