1

我经常有这样的参数的函数:

Public Shared Function F(ByVal address as String)

所以基本上我想抛出new ArgumentException("Invalid address!", "address")

现在的问题是,当我使用内置的重构工具重命名局部变量时(假设我将地址重命名为 addr),我的参数异常中的字符串仍然是“address”而不是“addr”!

我想知道这个问题的最佳解决方案是什么?(除了手动跟踪或使用 Ctrl-F 搜索)

4

2 回答 2

3

在 C# 中,您可以执行以下操作:

static string GetMemberName<T>(Expression<Func<T>> expr)
{
  var body = ((MemberExpression)expr.Body);
  return body.Member.Name;
}

然后你会像这样使用它:

static void Test(string someParam)
{
    if (someParam == null) { 
        throw new ArgumentNullException(GetMemberName(() => someParam)); 
    }
}
于 2011-05-18T10:33:34.347 回答
1

ReSharper可以处理这个问题。它还可以重命名字符串中出现的变量。
但是,我不确定他们对 VB.NET 的支持有多好。

于 2011-05-18T09:21:35.780 回答