C#:无法删除 SA1401 stylecop 警告

C#: SA1401 stylecop warning unable to be removed

我试图使用以下代码抑制 SA1401(字段名应该是私有的)警告:

[SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1306:FieldNamesMustBeginWithLowerCaseLetter", Justification = "Some field names should be capital letters")]
[SuppressMessage("Microsoft.StyleCop.CSharp.Maintainability", "SA1401:FieldsMustBePrivate", Justification = "Some fields must be public")]
[EventSource(Guid = "9E1C02F1-9B14-4906-AA88-ED2140A102B7")]
public class ProcessApiEventSource : EventSource
{
    /// <summary>
    /// Event source logger instance
    /// </summary>
    public static ProcessApiEventSource Log = new ProcessApiEventSource();
    ...
}

在抑制 SA1306 警告时,不会抑制 SA1401 警告。谁能建议为什么压制不起作用?另外,有没有一种方法可以使用访问器更改声明,以便代码遵守该规则并清除该警告本身?

为了消除错误,您可以将 public 字段转换为私有字段,并将其公开为 public 属性.

public class ProcessApiEventSource : EventSource
{
    private static ProcessApiEventSource MyLog = new ProcessApiEventSource();

    public static ProcessApiEventSource Log  { get { return MyLog; } }
}

如果您使用的是 .NET 4.6,那么您也可以使用 getter-only 属性 表达式。

public class ProcessApiEventSource : EventSource
{
    public static ProcessApiEventSource Log => new ProcessApiEventSource();
}
[SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1401:FieldsMustBePrivate", Justification = "Some fields must be public")]

我用它来抑制消息 here