2009-09-25 13 views
74

Estoy generando la mayor parte de mi código de andamio ASP.NET MVC. Todos los archivos generados son clases parciales que usan convenciones de nomenclatura estándar. Por ejemplo, mi archivo de controlador de empleado se llama EmployeeController.cs. Si deseo extender el EmployeeController con lógica personalizada, no generada, creo un segundo archivo de clase parcial llamado EmployeeControllerCustom.cs. Separé la lógica personalizada y la lógica generada en dos archivos diferentes, así que la próxima vez que genero EmployeeController, mis cambios personalizados no se sobrescribirán. Agregar el sufijo "Personalizado" al nombre del archivo me parece razonable, pero ¿hay una convención de nomenclatura de archivos de clase parcial más establecida que debería seguir?Convenciones de nomenclatura para archivos de clase parcial

Respuesta

121

Uso la separación . - por ejemplo EmployeeController.SomeSpecialBehaviour.cs. También lo vinculo al árbol del proyecto a través de "dependentUpon" o lo que sea que esté en el archivo csproj, de modo que anida cuidadosamente debajo del archivo (en el explorador de soluciones). Sin embargo, tienes que hacer eso a mano (edita el archivo csproj) o con un complemento; por ejemplo:

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

aparece como:

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

no se dio cuenta del DependentUpon trabajó en los archivos ... – thecoop

+2

la DependentUpon la sugerencia es genial y funciona muy bien. Gracias por anotar Si estoy leyendo correctamente, no use simplemente un sufijo estándar como "Personalizado". Su sufijo siempre expresa la intención de la funcionalidad del archivo de clase parcial. Además, ¿hay alguna razón por la que usa el. separación opuesta a la carcasa? Hace el. proporcionar algo más que una mejor legibilidad? Gracias. –

+7

Correcto: el nombre del archivo indica la intención del código en * esa parte *. Entonces, si estoy implementando una interfaz exótica (y manteniendo el código separado), podría ser 'SomeType.ICustomTypeDescriptor.cs'. El '.' (IMO) separa las dos cosas: el tipo real (' SomeType') y el intento 'ICustomTypeDescriptor' - ambos ya están completamente encapsulados; además, coincide perfectamente con cosas como 'SomeForm.Designer.cs' ;-p –

9

Para añadir a la respuesta 's Marc Gravell ♦, que tenía una situación con archivos en una subcarpeta y el DependentUpon nodo siendo ignorado. El corto de él es que, en tal caso, mi xml tenía que ser:

<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> 

espero que esto ayude a alguien :)

+0

Me ayudó, gracias. – heltonbiker

Cuestiones relacionadas