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

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

protected override void Initialize(params object[] parameters)

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

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

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


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


Ответы (2)


Вы пытались поместить имена параметров в статический массив строк только для чтения и вызвать

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]);
    }
    ...
}
person Jeffrey L Whitledge    schedule 01.10.2010

Я не вижу в параметрах ничего, что могло бы контролировать это, по крайней мере, не отображается в диалоговом окне параметров. Вы пробовали спрашивать на форумах Resharper? Там довольно отзывчивые.

person James King    schedule 01.10.2010