2009-12-02 15 views

Respuesta

17

Cuando tenga que autogenerar una parte de esas clases y escribir manualmente el resto del contenido de las clases.

Esto es para que usted puede poner el contenido generado por máquina en un archivo y código con codificación de la mano en otro archivo. La ventaja de hacerlo es que cuando tiene que regenerar el código fuente, su parte codificada a mano no se borrará.

Así es como MS genera contenido de clase por sus diseñadores GUI (pensar en los *.designer.cs archivo) y le permite poner la carne de su lógica en otro archivo relacionado (*.cs)

5

Si ha autogenerado código que desea extender, una clase parcial es una excelente manera de hacerlo.

Por ejemplo, se extiende a las clases de LINQ SQL que generan conseguir.

3

Digamos que tiene controladores de eventos y otros códigos GUI en un solo lugar, y quiere seguir otro código no relacionados con interfaz gráfica de usuario en un solo lugar. El patrón MVC que no es fácil en C#.

+2

Por qué no tienen código de interfaz gráfica de usuario en una clase * * y el código no GUI en otra clase * *? –

+1

Usted está viviendo en un mundo ideal, la mayoría del código C# tiene lógica de negocios escrita dentro de los manejadores de eventos. Al menos tener clases parciales y extraer proporcionan algún tipo de mejor administración de código, también este tipo de refactorización se puede hacer fácilmente en VS –

6

Al igual que los otros decían código generado automáticamente es una buena razón. También uso clases parciales a veces cuando quiero poner una clase anidada en su propio archivo.

public partial class MyClass 
{ 
    private class NestedClass 
    { 
     ... 
    } 
} 

además hay este pequeño truco para anidar un archivo en el explorador de soluciones (para hacer como WinForm y anidar el archivo Form1.designer.cs).

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

Nesting file in Visual Studio

Cuestiones relacionadas