具有相同名称的通用和非泛型类型的约定

时间:2015-12-26 00:50:49

标签: c# generics convention

Task是以通用和非泛型形式存在的类的示例。通用表单扩展了非泛型表单。

public class Task
{

}

public class Task<T> : Task
{

}

说我自己正在实施某种类型的东西。通常,惯例是将不同的类放在不同的文件中。因为它们具有相同的名称,所以在这里是不可能的。

这种情况的惯例是什么?将两个类保留在同一个文件中,或将泛型类放在不同的文件中,但名称不同?

2 个答案:

答案 0 :(得分:3)

虽然Microsoft没有发布处理这种情况的标准方法,但是他们将Task<TResult>放在一个不同的文件中,其名称与Task无关:非泛型类在文件中Task.cs,而通用版本位于文件Future.cs

同样,ExpressionExpression<TResult>位于不同的文件中(Expression.csLambdaExpression.cs)。

看来,在文件中放置类的逻辑是该类与其逻辑上属于的其他类一起使用。

答案 1 :(得分:1)

我采用的惯例(随后在我的工作场所鼓励)是将通用参数添加到文件名中。因此,例如,对于非通用版本,我们有Task(T).cs,对于通用版本,我们有scaleY。这背后的原因主要是由于我们非常严格地按照每个文件规则执行一个类。