Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Игнорировать Невозможно разрешить символ в Resharper

Автор вопроса: Austin SalonenОтветов: 2

Скажем, у меня есть сигнатура метода:

protected override void Initialize(params object[] parameters)

... и объект может точно обрабатывать все параметры. Когда я выполняю проверку этих параметров (скажем, устанавливаю их в поля класса) и один из них null, я хотел бы иметь возможность сделать что-то подобное без предупреждения от ReSharper:

if (parameters[5] == null)
    /* Yields:  Cannot resolve symbol 'knownParameterName' */
    throw new ArgumentNullException("knownParameterName");

В контексте моего приложения это предупреждение нормально. Кто-нибудь знает, какое правило мне нужно игнорировать?

  • Начиная с R# 6 (или 6.1?) это можно сделать с помощью комментария: // ReSharper disable NotResolvedInText (или установки параметров проверки). 25.02.2012

resharper

Ответы

Ответ 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? Там довольно отзывчивые.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы