【问题标题】:How do i bind function arguments to the parameters i supply in creating an ArgumentException object?如何将函数参数绑定到我在创建 ArgumentException 对象时提供的参数?
【发布时间】:2011-08-27 21:28:35
【问题描述】:

我经常有这样的参数:

Public Shared Function F(ByVal address as String)

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

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

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

【问题讨论】:

    标签: c# .net vb.net exception argumentexception


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我可以说 VB.NET 几乎和 C# 一样好,它确实可以处理这种情况。
      猜你喜欢
      • 2019-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多