Share via


Diseño de interfaces

Actualización: noviembre 2007

Una interfaz define las firmas para un conjunto de miembros que deben proporcionar los implementadores. Las interfaces no pueden proporcionar los detalles de implementación para los miembros. Por ejemplo, la interfaz ICollection define miembros relacionados con el trabajo con colecciones. Cada clase concreta que implementa la interfaz debe proporcionar los detalles de implementación para estos miembros. Aunque las clases sólo pueden heredar de una única clase, pueden implementar varias interfaces. Las instrucciones siguientes ayudan a garantizar que sus interfaces están correctamente diseñadas.

Defina una interfaz si necesita que un conjunto de tipos que incluya algunos tipos de valor admita cierta funcionalidad común.

Los tipos de valor deben heredar de ValueType. Por esta razón, las clases abstractas no se pueden utilizar para especificar un contrato para los tipos de valor; en su lugar se deben utilizar las interfaces.

Evite utilizar interfaces de marcador (interfaces sin miembros).

Los atributos personalizados proporcionan una manera de marcar un tipo. Para obtener más información sobre los atributos personalizados, vea Escribir atributos personalizados. Se prefieren los atributos personalizados cuando puede diferir la comprobación del atributo hasta que el código esté ejecución. Si su escenario requiere la comprobación en tiempo de compilación, no puede cumplir esta instrucción.

Proporcione al menos un tipo que es una implementación de una interfaz.

Esto ayuda a garantizar que la interfaz está bien diseñada y que se puede implementar sin demasiada dificultad. La clase Int32 proporciona una implementación para la interfaz IComparable.

Proporcione al menos un miembro que consuma cada interfaz definida (por ejemplo, un método que tome la interfaz como un parámetro o una propiedad que tenga el mismo tipo que la interfaz).

Éste es otro mecanismo que ayuda a garantizar que la interfaz está bien diseñada y que se puede utilizar sin demasiada dificultad.

No agregue miembros a una interfaz que se haya distribuido previamente.

Agregar nuevos miembros estropeará el código que implementaba la versión anterior de la interfaz. Éste es una de las razones principales por las que, en general y cuando es posible, es preferible usar clases respecto a las interfaces. Para obtener más información, vea Elegir entre clases e interfaces.

Si la definición distribuida de la interfaz requiere miembros adicionales, puede implementar una nueva interfaz y los miembros adecuados para utilizarla.

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

Elegir entre clases e interfaces

Otros recursos

Instrucciones de diseño de tipos

Instrucciones de diseño para desarrollar bibliotecas de clases