65.9K
CodeProject 正在变化。 阅读更多。
Home

WebServices 中的方法重载

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

2分钟阅读

viewsIcon

6077

Web 服务就像任何其他的 .NET 类一样,也是类。然而,它们具有标记为 WebMethods 的方法,这些方法可以被

Web 服务就像任何其他的 .NET 类一样,也是类。然而,它们具有标记为 WebMethods 的方法,这些方法可以被 Web 服务暴露,供外部世界调用。除了这些 WebMethods 之外,它们也可以像其他类一样拥有普通方法。


由于 Web 服务是一个类,因此它可以利用所有面向对象 (OO) 特性,例如方法重载。但是,要在 WebMethods 上使用此功能,我们需要做一些额外的事情,本文将对此进行说明。

创建 WebMethods

让我们创建一个简单的 WebService,它具有以下重载方法


public int AddNumbers(int a, int b)

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

public decimal AddNumbers(decimal a, decimal b)

这三个方法都将返回 WebClient 的加法运算结果。现在,让我们将这些方法标记为 Web Methods。为此,将 [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;

}

这可以正常编译。在浏览器中运行 WebService。应该会显示一个错误,指出 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;

}

现在编译 WebService 并在浏览器中运行。您可以看到第一个方法显示为 AddNumbers,而对于第二和第三个方法,我们使用 MessageName 属性设置的别名显示出来

© . All rights reserved.