C# 为什么可以';我是否将[SuppressMessage(…;)]中的常量与ReSharper一起使用?

C# 为什么可以';我是否将[SuppressMessage(…;)]中的常量与ReSharper一起使用?,c#,resharper,C#,Resharper,我希望将抑制ReSharper警告所需的字符串作为常量放在一个类中,这样我就不需要将字符串全部放在一个类中,并且可以从find all references函数中获益,以了解我抑制了哪个规则多少次 public class Rules { public const string ReSharper= "ReSharper"; public const string InconsistentNaming = "InconsistentNaming"; } 装饰我的会员如下 public

我希望将抑制ReSharper警告所需的字符串作为常量放在一个类中,这样我就不需要将字符串全部放在一个类中,并且可以从find all references函数中获益,以了解我抑制了哪个规则多少次

public class Rules
{
  public const string ReSharper= "ReSharper";
  public const string InconsistentNaming = "InconsistentNaming";
}
装饰我的会员如下

public class MyClass
{
  [SuppressMessage(Rules.ReSharper, Rules.InconsistentNaming)]
  protected uint v { get; }
}
使ReSharper仍然抱怨名称以小写字母开头的属性。仅当使用

[SuppressMessage("ReSharper", "InconsistentNaming")]

重拾器警告消失。有没有办法让它在上面提到的庄园中使用常量工作?

ReSharper根据源代码的语法执行分析,并报告警告。因此,它专门寻找形式为
“ReSharper”
“unconsistentNaming”
等的字符串标记。为了理解您的常量,它必须对代码执行语义分析,例如通过确定
Rules.ReSharper
是什么,然后当它发现它是字符串常量时,它的值是什么


后一种分析要慢得多,并且会影响ReSharpers分析的性能。所以它不能这样做,所以你必须指定文字字符串。

这个主意很酷,而且你可以理解你会想要这样做,我认为这是不可能的,因为它必须在运行之前获得值(我知道它的常数:p)听起来可能类似?@mjwills我也问过这个问题