C# StyleCop SA1402和泛型

C# StyleCop SA1402和泛型,c#,generics,stylecop,C#,Generics,Stylecop,我认为SA1402是一条很好的规则,但我对泛型有问题。我有一个使用Func委托的类,因此名称大致与该签名平行。也就是说,我有名为Operation、Operation、Operation等的类。根据SA1402,我需要将所有这些小类放在单独的文件中,并对文件名进行一些奇怪的修饰。此外,如果我需要更改其中一项,我通常需要更改其余项。这似乎比单个模块更不受支持 SA1402允许相同基本类(以及部分)的泛型驻留在一个文件中有意义吗?在这种情况下,类Operation的所有排列将驻留在'Operatio

我认为SA1402是一条很好的规则,但我对泛型有问题。我有一个使用
Func
委托的类,因此名称大致与该签名平行。也就是说,我有名为
Operation
Operation
Operation
等的类。根据SA1402,我需要将所有这些小类放在单独的文件中,并对文件名进行一些奇怪的修饰。此外,如果我需要更改其中一项,我通常需要更改其余项。这似乎比单个模块更不受支持


SA1402允许相同基本类(以及部分)的泛型驻留在一个文件中有意义吗?在这种情况下,类
Operation
的所有排列将驻留在'Operation.cs'中。

它们是几种命名约定。看来最受欢迎的是

操作[TType].cs

操作[T,TType].cs

操作[T1,T2,T类型].cs

但是你也可以用一些更经典的东西,比如

操作'1.cs

行动'2.cs

行动'3.cs

(请参阅)

我倾向于同意您的看法,总的来说,SA1402是个好主意。但是在这个特定的例子中,其他人喜欢它()。我想和其他许多人一样。我选择在非常特定的
范围
目标
级别忽略此警告:

[assembly: SuppressMessage(
    "StyleCop.CSharp.MaintainabilityRules",
    "SA1402:FileMayOnlyContainASingleType",
    Justification = "How else would we name generic and non generic (https://stackoverflow.com/a/4063061/516433).",
    Scope = "type",
    Target = "~T:Pastdev.Cli.AppResources`1<!!0>")]
[程序集:SuppressMessage(
“StyleCop.CSharp.maintabilityRules”,
“SA1402:FileMaynlyContaineAsingType”,
justion=“否则我们将如何命名泛型和非泛型(https://stackoverflow.com/a/4063061/516433).",
Scope=“type”,
Target=“~T:Pastdev.Cli.AppResources`1”)]
如果您已覆盖StyleCop的
文件命名约定设置(),则使用
操作.cs
方法将有效


否则,如果您将文件命名为:
Operation{TType}.cs
等(请注意大括号)

这里有几点建议:[泛型类文件名惯例][1][1]:您已在具有一个类型参数的泛型类上指定了目标-您是否有任何关于如何使用多个类型参数标记泛型类的参考资料?我没有参考资料,但在使用Visual Studio生成它时,会显示:
[assembly:System.Diagnostics.CodeAnalysis.SuppressMessage(“StyleCop.CSharp.DocumentationRules”,“SA1600:应记录元素”,justify=“”,Scope=“type”,Target=“~T:Mitre.CliApp.IO.CircularBuffer`2”)]
。另外,可能值得注意的是,我不认为您可以在同一行中有多个目标。是的,我知道如何覆盖Stylecop设置。整个想法是更改代码,以便在不更改设置的情况下通过。