C# 分部类文件的命名约定

C# 分部类文件的命名约定,c#,naming-conventions,code-generation,partial-classes,C#,Naming Conventions,Code Generation,Partial Classes,我正在生成我的ASP.NET MVC脚手架代码的大部分。所有生成的文件都是使用标准命名约定的分部类。例如,我的员工控制器文件名为EmployeeController.cs。如果我希望使用自定义的非生成逻辑扩展EmployeeController,我将创建第二个名为EmployeeControllerCustom.cs的部分类文件。我将自定义和生成的逻辑分为两个不同的文件,以便下次生成EmployeeController时不会覆盖自定义更改。在文件名中添加“自定义”后缀对我来说似乎是合理的,但是是

我正在生成我的ASP.NET MVC脚手架代码的大部分。所有生成的文件都是使用标准命名约定的分部类。例如,我的员工控制器文件名为EmployeeController.cs。如果我希望使用自定义的非生成逻辑扩展EmployeeController,我将创建第二个名为EmployeeControllerCustom.cs的部分类文件。我将自定义和生成的逻辑分为两个不同的文件,以便下次生成EmployeeController时不会覆盖自定义更改。在文件名中添加“自定义”后缀对我来说似乎是合理的,但是是否有一个更为成熟的部分类文件命名约定我应该遵循?

我使用
分隔-例如
EmployeeController.SomeSpecialBehaviour.cs
。我还通过“dependentUpon”或csproj中的任何内容将其链接到项目树中,以便它整齐地嵌套在文件下(在解决方案资源管理器中)。但是,您必须手动(编辑csproj)或使用加载项来完成此操作;例如:

<Compile Include="Subfolder/Program.cs" />
<Compile Include="Subfolder/Program.Foo.cs">
  <DependentUpon>Program.cs</DependentUpon> <!-- Note that I do not reference the subfolder here -->
</Compile>

Program.cs
显示为:

  • 子文件夹
    • Program.cs
      • Program.Foo.cs

更新/免责声明: 2018年,有人编辑了Marc Gravell♦'s答案(上面接受的答案)在他的示例中包含一个子文件夹。如何处理有子文件夹的情况是这个答案的要点

如果没有这个免责声明,你可能不会理解为什么这个答案存在,为什么它有这么多选票


添加到Marc Gravel中♦'s的回答是,我遇到了一种情况,即子文件夹中的文件被忽略了
DependentUpon
节点。其缺点是,在这种情况下,我的xml必须是:

<Compile Include="foo\bar.cs" />
<Compile Include="foo\bar.baz.cs">
    <DependentUpon>bar.cs</DependentUpon>  <!-- Note that I do not reference the subfolder here -->
</Compile>

酒吧

我希望这对某人有所帮助:)

DependentUpon建议真的很酷,效果很好。谢谢你的提醒。如果我读的没错,你不能简单地使用“Custom”这样的标准后缀。你的后缀总是表达部分类文件功能的意图。还有,您使用该选项的原因是什么。与套管相对的分离?是的。除了提高可读性之外,还能提供什么?谢谢。正确-文件名表示该部分代码的意图。因此,如果我要实现一个外来接口(并将代码分开),它可能是
SomeType.ICustomTypeDescriptor.cs
(IMO)将两件事分开:实际类型(
SomeType
)和意图
ICustomTypeDescriptor
——两者都已完全区分大小写;此外,它还与类似于
SomeForm.Designer.cs
-完美无缺。谢谢你的额外见解。如果我能做的不仅仅是投票,那么你的答案和马克也是正确的。@Marc Gravel:你知道有没有提供文件依赖项设置功能的VS扩展名吗?@Dyppl该扩展名也可以为我做这件事。这是因为我首先在数据库中启动了项目,当它创建模型时,它将它们放在模型图中。VS2015,如果它对任何人都有影响。