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

Public Shared Function F(ByVal address as String)

所以基本上我想抛出新的ArgumentException(“ Invalid address!”,“ address”)

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

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

最佳答案

在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));
    }
}

09-10 03:03
查看更多