方法参数已更改问题

时间:2016-08-12 10:35:35

标签: c# visual-studio

我有一个方法ErrorLog(),它被调用了大约200次并且有4个参数。

现在我想再添加一个参数。但是当我这样做时,有200多个错误。新参数的类型为Exception e

我可以去每个方法电话&添加一个Exception e的参数,但这需要很多时间。

有什么简单的方法吗?

我正在使用VS 2015 Professional。

新参数不是可选的。我需要在每次通话时传递它。

3 个答案:

答案 0 :(得分:5)

您有两个(实际上是三个)机会:

  1. 使用新参数

    定义新的重载
    ErrorLog(string arg1, string arg2, string arg3, string arg4) {...}
    ErrorLog(string arg1, string arg2, string arg3, string arg4, Exception e) {...}
    

    通过这种方式,您还可以向用户提示不推荐使用仅包含四个参数的方法,因此应该使用Obsolete - 属性进一步使用nopt。任何仍然使用“旧”行为的用户将获得编译器警告以更改方法,但是对于遗留代码,它保证可以工作(至少在给定时间内)。

    但是,您应该将呼叫从旧方式重定向到新方式,为新参数提供一些默认值:

    ErrorLog(string arg1, string arg2, string arg3, string arg4)
    {
        ErrorLog(args1, arg2, arg3, arg4, null);
    }
    
  2. 将新参数定义为可选

    ErrorLog(string arg1, string arg2, string arg3, string arg4, Exception e = null) 
    {
        if(e == null) //...
    }
    
  3. 如上所述
  4. 更改每次调用的调用代码,Search and replace使用regex-option使这变得相当容易:

    找到:ErrorLog\((^\)*)\)
    替换:ErrorLog($1, e)

答案 1 :(得分:0)

为函数的最后一个参数设置默认值,例如

function Errorlog(var1, var2, var3, var4, var5=...)
{

}

答案 2 :(得分:0)

您必须更改每个通话的通话代码。

但是 Reshapers Change_Signature提供了一种自动且简单的方法来更改方法签名并相应地更新调用。

相关问题