C# “忽略”;无法解析符号“;再竖琴

C# “忽略”;无法解析符号“;再竖琴,c#,resharper,C#,Resharper,假设我有这样一个方法签名: protected override void Initialize(params object[] parameters) protected override void Initialize(params object[] parameters) { for (int paramIndex = 0; paramIndex < initializationParameterNames.Length; paramIndex++) {

假设我有这样一个方法签名:

protected override void Initialize(params object[] parameters)
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]);
    }
    ...
}
。。。并且该对象能够准确地处理所有参数。当我对这些参数进行验证时(比如将它们设置为类的字段),其中一个参数为
null
,我希望能够在没有ReSharper警告的情况下执行类似的操作:

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

在我的应用程序上下文中,此警告正常。有人知道我需要忽略什么规则吗?

我在选项中没有看到任何可以控制此操作的内容,至少在选项对话框中没有显示。你试过在Resharper论坛上提问吗?它们的响应速度非常快。

您是否尝试过将参数名放入静态只读字符串数组并调用

throw new ArgumentNullException(initializationParameterNames[5]);
?

你可以这样做:

protected override void Initialize(params object[] parameters)
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]);
    }
    ...
}
protected override void Initialize(参数对象[]参数)
{
对于(int-paramIndex=0;paramIndex//ReSharper disable NotResolvedInText
(或设置检查选项)。