我应该用通用类定义命名我的文件?

我正在编写几个都有generics类型参数的类,但是我需要重载类,因为在不同的场景中我需要不同数量的参数。 基本上,我有

public class MyGenericClass { ... } public class MyGenericClass { ... } public class MyGenericClass { ... } // it could go on forever, but it won't... 

我希望它们都在同一个命名空间中,但每个类在一个源文件中。 我该怎么命名文件? 有最好的做法吗?

我见过人们用

 MyGenericClass`1, MyGenericClass`2 or MyGenericClass`3 

(数字是通用参数的数量)。

我认为当你在类上调用.ToString时,你得到的是TypeName。

出现这种情况时,我采用与C#generics的XML文档注释中使用的相同约定,即使用{}代替<>因为尖括号在XML或文件名中不友好,但是curl的是。 所以类似于:

MyClass的横置的.cs

MyClass的{T,K}的.cs

如果你真的有很多参数,那么作为命名方案可能会有点笨拙,所以我倾向于采用反引号的CLR约定,后跟参数计数,例如

MyClass`1.cs

MyClass`2.cs

或者根据情况混合搭配两种方案。

我认为你不会在C#社区找到很多教条,他们偏爱具有相同名称的generics类的每个变体的单独文件; 我更喜欢在你描述的情况下使用一个,但是如果代码对于每个变体都必须复杂/冗长,我可以看到你提出的建议。 一般来说,我只是使用相关类的名称作为文件名。

如果我要将变体分成单独的文件,我可以看到使用Michael的解决方案,尽管对于我们这些在命令行中使用Unix风格工具的人来说会有点痛苦,例如,Cygwin或AndLinux。 我可能会使用下划线或没有标点符号。 或者像1P,2P,3P这样的后缀。

我将它们全部放在同一个文件中,除非它们很大(通常它们不会,除了Ts最多的那个)。

除了你在.NET框架指南中找到的内容之外,命名类并没有真正的最佳实践,因为它是编程创意方面的一部分,不幸的是SSCLI只回到2.0,所以你在那里找不到多少帮助。

我通常使用Classname.1.csClassname.2.cs等…其中number是generics参数的数量,类似于notation used in the framework documentation (and in XML documentation in your sourcecode). Sometimes you also have a class with no generic arguments (similar to `1 notation used in the framework documentation (and in XML documentation in your sourcecode). Sometimes you also have a class with no generic arguments (similar to notation used in the framework documentation (and in XML documentation in your sourcecode). Sometimes you also have a class with no generic arguments (similar to框架中的ICollection and ICollection`),文件名只是类名,正如预期的那样。 与使用反引号相比,这样做的好处是文件名中不会包含任何无效字符。 并非所有文件系统,版本控制系统,操作系统都允许在名称中使用反引号字符。