如何针对整个类型抑制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")]
答案 0 :(得分:10)
不幸的是,这不起作用。 FxCop仅处理针对检测到的违规而针对同一目标声明的抑制。如果它在您的Serialize
方法中发现违规,那么将“隐藏”该违规的唯一SuppressMessage
属性是在方法本身上声明的属性或其Target
属性标识方法的属性。
如果要对Serializer<T>
类中的每个静态方法禁止CA1000违规,则需要通过为每个方法创建SuppressMessage
属性来执行此操作。
@Matt Faus:那么
Scope
参数有什么意义呢?
Scope
参数让FxCop知道Target
参数代表什么样的东西。例如,如果Target
是"A.B.C"
,那么它是指名称为A.B.C
的命名空间还是命名空间C
中名为A.B
的类? Scope
可能应该被命名为TargetKind
,但不幸的是,它不会改变它实际代表的内容......
另见this answer。