2008-11-25 18 views
5

Me gustaría que una clase implemente una interfaz, no quiero cambiar la clase original (que agregaría dependencias no deseadas).¿Puedo usar métodos de extensión para implementar una interfaz?

Sé que podría heredar de la clase y hacer que su hijo implemente estos métodos, pero luego me enfrento a un problema sobre cómo convertir la clase padre (que proviene de los datos/ORM) a esta clase de presentación.

Si implemento todos los métodos necesarios para la interfaz, ¿contará o no como interfaz?

Respuesta

12

No, aún no contará como la implementación de la interfaz.

Los métodos de extensión no son más que una forma de llamar a los métodos estáticos de otra manera. No afectan la identidad del objeto, la herencia, etc. en absoluto.

+0

¿Hay alguna razón fundamental por la que no pudieron? Es decir. ¿podrían los métodos de extensión compilarse en la identidad de un objeto/interfaz en lugar de simplemente ser azúcar sintáctico para métodos estáticos? –

+0

@GordonBean: No sin volver a iniciar la función desde cero, no. El punto es que solo son azúcar sintáctico. Si creas una interfaz, puedo agregar un método de extensión sin que siquiera te des cuenta. Eso es realmente poderoso. –

+0

Gracias. Varias veces ahora he encontrado que quiero extender una clase o interfaz existente para que implemente otra interfaz (por ejemplo, hacer que todos los implementadores de una interfaz IComparable solo utilicen los métodos de interfaz). Es decir. usted hace la interfaz, y amplío ese tipo de interfaz. ¿Es esta una característica que tiene sentido implementar, o estoy pensando en el problema de la manera incorrecta? –

Cuestiones relacionadas