具有相同名称的泛型和非泛型类型的约定
Convention for generic and non-generic types with same name
Task
是以通用和非通用形式存在的 class 的示例。通用形式扩展了非通用形式。
public class Task
{
}
public class Task<T> : Task
{
}
假设我正在自己实现类似的东西。通常,约定是将不同的 class 放在不同的文件中。由于他们同名,这里不可能。
这种情况的惯例是什么?将两个 class 放在同一个文件中,或者将通用 class 放在不同的文件中,但名称不同?
虽然 Microsoft 没有发布处理这种情况的标准方法,但他们将 Task<TResult>
放在不同的文件中,名称与 Task
无关:非通用 class 在文件 Task.cs
, while generic one is in the file Future.cs
.
中
同样,Expression
和 Expression<TResult>
位于不同的文件 (Expression.cs
and LambdaExpression.cs
)。
在文件中放置 classes 的逻辑似乎是 class 与它在逻辑上属于的其他 classes 一起。
我采用的惯例(并随后在我的工作场所鼓励)是将通用参数添加到文件名中。因此,例如,我们将 Task.cs
用于非通用版本,而 Task(T).cs
用于通用版本。这背后的原因主要是由于我们非常严格地执行一个 class 每个文件规则。
Task
是以通用和非通用形式存在的 class 的示例。通用形式扩展了非通用形式。
public class Task
{
}
public class Task<T> : Task
{
}
假设我正在自己实现类似的东西。通常,约定是将不同的 class 放在不同的文件中。由于他们同名,这里不可能。
这种情况的惯例是什么?将两个 class 放在同一个文件中,或者将通用 class 放在不同的文件中,但名称不同?
虽然 Microsoft 没有发布处理这种情况的标准方法,但他们将 Task<TResult>
放在不同的文件中,名称与 Task
无关:非通用 class 在文件 Task.cs
, while generic one is in the file Future.cs
.
同样,Expression
和 Expression<TResult>
位于不同的文件 (Expression.cs
and LambdaExpression.cs
)。
在文件中放置 classes 的逻辑似乎是 class 与它在逻辑上属于的其他 classes 一起。
我采用的惯例(并随后在我的工作场所鼓励)是将通用参数添加到文件名中。因此,例如,我们将 Task.cs
用于非通用版本,而 Task(T).cs
用于通用版本。这背后的原因主要是由于我们非常严格地执行一个 class 每个文件规则。