如何将函数参数绑定到我在创建 ArgumentException 对象时提供的参数

本文关键字:参数 ArgumentException 对象 创建 函数 绑定 | 更新日期: 2023-09-27 17:56:53

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

Public Shared Function F(ByVal address as String)

所以基本上我想抛出新的 ArgumentException("无效地址!","地址")

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

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

如何将函数参数绑定到我在创建 ArgumentException 对象时提供的参数

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

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