我有一个带有以下签名的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
的代码相同,只是用于处理其他参数的其他代码。
在不久的将来,我相信会再次添加其他参数,我需要再次为该方法编写另一个重载。
有没有办法在不重复代码的情况下写这个?
答案 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) {}