Как мне привязать аргументы функции к параметрам, которые я предоставляю при создании объекта ArgumentException?

#c# #.net #vb.net #exception #argumentexception

#c# #.net #vb.net #исключение #argumentexception

Вопрос:

У меня часто есть функции, которые принимают аргументы, подобные этому:

Public Shared Function F(ByVal address as String)

Итак, в основном я хочу создать новое исключение ArgumentException («Недопустимый адрес!», «address»)

Теперь проблема в том, что когда я использую встроенные инструменты рефакторинга для переименования локальных переменных (допустим, я переименовываю address в addr), строка в моем исключении аргумента по-прежнему «address», а не «addr»!

Мне интересно, каково наилучшее решение этой проблемы? (кроме отслеживания вручную или поиска с помощью Ctrl-F)

Ответ №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 поддержка есть.

Комментарии:

1. Я могу сказать, что VB.NET почти так же хорош, как C #, и он справляется с этой ситуацией.