11

如何抑制整个类型的 FxCop 警告?

namespace ConsoleApplication1
{     
    public static class Serializer<T>
    {
        public static string Serialize(T obj)
        {
            return string.Empty;
        }

        public static T Deserialize(string str)
        {
            return default(T);
        }
    }

我试过这个,但它不适合我:

[assembly: SuppressMessage("Microsoft.Design",
    "CA1000:DoNotDeclareStaticMembersOnGenericTypes", Scope = "Type",
    Target = "ConsoleApplication1.Serializer'1")]
4

1 回答 1

11

不幸的是,这行不通。FxCop 仅处理针对与检测到的违规相同的目标声明的抑制。如果它发现您的Serialize方法存在违规,则唯一SuppressMessage会“隐藏”该违规的属性是在方法本身上声明的属性或其Target属性标识该方法的属性。

如果您想为Serializer<T>类中的每个静态方法抑制 CA1000 违规,您需要通过SuppressMessage为每个方法创建一个属性来执行此操作。

@Matt Faus:那么Scope争论的重点是什么?

Scope参数让 FxCop 知道该Target参数代表什么类型的东西。例如,如果Target"A.B.C",它是指命名空间还是命名空间中命名A.B.C的类?可能应该命名为,但不幸的是,这并没有改变它实际代表的内容......CA.BScopeTargetKind

另请参阅此答案

于 2010-07-15T23:03:23.907 回答