【问题标题】:Ignore "Cannot resolve symbol" in Resharper忽略 Resharper 中的“无法解析符号”
【发布时间】:2010-10-02 03:10:54
【问题描述】:

假设我有这样的方法签名:

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(或设置检查选项)。

标签: c# resharper


【解决方案1】:

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

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】:

    我在选项中看不到任何可以控制这一点的东西,至少没有显示在选项对话框中。您是否尝试过在 Resharper 论坛上提问?他们的反应很灵敏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 2013-03-20
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多