Скажем, у меня есть сигнатура метода:
protected override void Initialize(params object[] parameters)
... и объект может точно обрабатывать все параметры. Когда я выполняю проверку этих параметров (скажем, устанавливаю их в поля класса) и один из них null, я хотел бы иметь возможность сделать что-то подобное без предупреждения от ReSharper:
if (parameters[5] == null)
/* Yields: Cannot resolve symbol 'knownParameterName' */
throw new ArgumentNullException("knownParameterName");
В контексте моего приложения это предупреждение нормально. Кто-нибудь знает, какое правило мне нужно игнорировать?
Ответ 1 · рейтинг 1 · Jeffrey L Whitledge
Вы пытались поместить имена параметров в статический массив строк только для чтения и вызвать
throw new ArgumentNullException(initializationParameterNames[5]);
?
Вы можете сделать это следующим образом:
protected override void Initialize(params object[] parameters)
{
for (int paramIndex = 0; paramIndex < initializationParameterNames.Length; paramIndex++)
{
if (parameters.Length <= paramIndex)
throw new ArgumentException("Missing " + initializationParamterNames[paramIndex]);
if (parameters[paramIndex] == null)
throw new ArgumentNullException(initializationParameterNames[paramIndex]);
}
...
}
Ответ 2 · James King
Я не вижу в параметрах ничего, что могло бы контролировать это, по крайней мере, не отображается в диалоговом окне параметров. Вы пробовали спрашивать на форумах Resharper? Там довольно отзывчивые.