我经常有接受这样的参数的函数: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));
}
}