编写重载的Web服务方法

时间:2015-07-30 09:48:59

标签: c# web-services wsdl

我有一个带有以下签名的Web服务方法。

[WebMethod]
public void Start(string application, string version){}

由于其他要求,该方法必须接收其他参数,但同时支持尚未拥有最新版本的其他客户。所以我最终编写了两个重载方法

[WebMethod(MessageName="Start", Description="Start", EnableSession=true)]
public void Start(string application, string version){}

[WebMethod(MessageName="Startv2", Description="Startv2", EnableSession=true)]
public void Start(string application, string version, string exception){}

在这种情况下,我最终编写了重复的代码。 Startv2方法中的代码与Start的代码相同,只是用于处理其他参数的其他代码。

在不久的将来,我相信会再次添加其他参数,我需要再次为该方法编写另一个重载。

有没有办法在不重复代码的情况下写这个?

1 个答案:

答案 0 :(得分:0)

您可以使用带有可选参数的单个方法,WebMethods可以这样调用:

[WebMethod(MessageName="Start", Description="Start", EnableSession=true)]
public void Start(string application, string version){
    StartHandler(application, version);
}

[WebMethod(MessageName="Startv2", Description="Startv2", EnableSession=true)]
public void Start(string application, string version, string exception){
    StartHandler(application, version, exception);
}

    private void StartHandler(string application, string version, string exception = null) {}