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