2009-09-25 171 views
74

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

回答

121

我使用.分隔 - 例如EmployeeController.SomeSpecialBehaviour.cs。我还通过“依赖关系”或任何它在csproj中将它链接到项目树中,以便它整齐地嵌套在文件(在解决方案资源管理器中)下。不过你必须手动(编辑csproj)或者使用外挂程序来做到这一点;例如:

<Compile Include="Program.cs" /> 
<Compile Include="Program.Foo.cs"> 
    <DependentUpon>Program.cs</DependentUpon> 
</Compile> 

显示为:

  • Program.cs
    • Program.Foo.cs
+0

没有意识到DependentUpon上的任何文件工作... – thecoop 2009-09-25 17:38:21

+2

的DependentUpon建议非常酷,效果很好。感谢您的注意。如果我阅读正确,则不要简单地使用“自定义”之类的标准后缀。你的后缀总是表达部分类文件功能的意图。另外,你有没有理由使用这个。分离与套管相反?是的。提供的不仅仅是改进的可读性?谢谢。 – 2009-09-25 18:30:42

+7

正确 - 文件名称表示*部分*中代码的意图。所以如果我正在实现一个奇特的接口(并保持代码分离),它可能是'SomeType.ICustomTypeDescriptor.cs'。 IMO(IMO)分离了两件事:实际类型('SomeType')和意图ICustomTypeDescriptor - 都已经完全套用;此外,它与'SomeForm.Designer.cs';# – 2009-09-25 19:02:12

9

为了增加马克Gravell♦的回答,我有一种情况子文件夹中的文件和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> 

我希望这可以帮助别人:)

+0

帮助了我,谢谢。 – heltonbiker 2015-08-04 12:46:43