Как я могу подавить предупреждения 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")]
К сожалению, это не сработает. FxCop обрабатывает только подавления, заявленные для той же цели, что и обнаруженное нарушение. Если он обнаружит нарушение в вашем методе Serialize
, единственными атрибутами SuppressMessage
, которые будут «скрывать» это нарушение, являются либо атрибут, объявленный в самом методе, либо атрибут Target
] свойство идентифицирует метод.
Если вы хотите подавить нарушение CA1000 для каждого из ваших статических методов в классе Serializer
, вам нужно будет сделать это, создав атрибут SuppressMessage
для каждого этих методов.
@Matt Faus : В чем же тогда смысл аргумента
Scope
?
Аргумент Scope
позволяет FxCop узнать, что за вещь Target
аргумент представляет. Например, если Target
- «ABC»
, относится ли это к пространству имен с именем ABC
или к классу с именем C
в пространстве имен AB
? Область видимости
, вероятно, следует назвать как-то вроде TargetKind
, но это, к сожалению, не меняет того, что она на самом деле представляет ...
Также см. этот ответ .