#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 #, и он справляется с этой ситуацией.