Share via


Tipos anidados

Actualización: noviembre 2007

Un tipo anidado es un tipo que es un miembro de algún otro tipo. Los tipos anidados deberían estar estrechamente acoplados a su tipo declarativo y no deben ser útiles como un tipo de uso general. Los tipos anidados resultan confusos para algunos desarrolladores y no deberían estar públicamente visibles a menos que haya una razón de peso para hacerlo. En una biblioteca bien diseñada, los desarrolladores rara vez deberían tener que utilizar tipos anidados para crear instancias de objetos o declarar variables.

Los tipos anidados son útiles cuando el tipo declarativo utiliza y crea instancias del tipo anidado y el uso de dicho tipo anidado no se expone en miembros públicos.

Utilice tipos anidados cuando la relación entre el tipo anidado y su tipo exterior es tal que es deseable la semántica de accesibilidad de miembros.

Puesto que un tipo anidado se trata como un miembro del tipo declarativo, el tipo anidado tiene acceso a todos los demás miembros del tipo declarativo.

No utilice tipos anidados si es probable que se haga referencia al tipo desde fuera del tipo declarativo.

La declaración de variables y la creación de instancias de objeto para los tipos anidados no debería ser necesaria en escenarios comunes. Por ejemplo, un delegado de controlador de eventos que controla un evento definido en una clase no debería estar anidado en la clase.

No utilice tipos anidados si se deben crear instancias de los mismos mediante código cliente. Si un tipo tiene un constructor público, probablemente no debería anidarse.

Idealmente, sólo su tipo declarativo debe crear instancias del tipo anidado y utilizarlo. Si un tipo anidado tiene un constructor público, esto indicaría que el tipo tiene algún uso independiente de su tipo declarativo. En general, un tipo anidado no debería realizar tareas para tipos distintos de su tipo declarativo. Si un tipo tiene un objetivo más general, lo más probable es que no debería anidarse.

No defina un tipo anidado como un miembro de una interfaz. Muchos lenguajes no admiten este tipo de construcción.

Portions Copyright 2005 Microsoft Corporation. Reservados todos los derechos.

Portions Copyright Addison-Wesley Corporation. Reservados todos los derechos.

Para obtener más información sobre las directrices de diseño, consulte el libro titulado "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" de Krzysztof Cwalina y Brad Abrams, publicado por Addison-Wesley, 2005.

Vea también

Conceptos

Tipos y espacios de nombres

Otros recursos

Instrucciones de diseño de tipos

Instrucciones de diseño para desarrollar bibliotecas de clases