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

时间:2010-04-09 23:44:04

标签: c# generics filenames

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

 public class MyGenericClass<T> { ... }
 public class MyGenericClass<T, K> { ... }
 public class MyGenericClass<T, K, L> { ... }
 // it could go on forever, but it won't...

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

5 个答案:

答案 0 :(得分:9)

我见过人们使用

MyGenericClass`1, MyGenericClass`2 or MyGenericClass`3

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

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

答案 1 :(得分:2)

当出现这种情况时,我采用与C#泛型的XML文档注释中使用的相同约定,即使用{}代替<和{{1因为尖括号在XML或文件名中都不友好,但是卷曲的是。如下所示:

  

MyClass的横置的.cs

     

MyClass的{T,K}的.cs

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

  

MyClass`1.cs

     

MyClass`2.cs

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

我通常使用Classname.1.csClassname.2.cs等...其中数字是泛型参数的数量,类似于``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 ICollection and ICollection `在框架中),文件名将只是类名,如预期的那样。 与使用反引号相比,这具有以下优点:文件名中不会包含任何无效字符。并非所有文件系统,版本控制系统,操作系统都允许在名称中使用反引号字符。