implementación de interfaz implícita vs explícita

Posible duplicado:
C #: Interfaces: implementación implícita y explícita

¿Alguien explicaría las diferencias entre estas dos bestias y cómo usarlas? AFAIK, muchas clases de pre.2.0 se implementaron sin tipos generics, lo que provocó que la última versión implementara ambos tipos de interfaces. ¿Es el único caso por el cual uno necesitaría usarlos?

¿También puedes explicar en profundidad cómo usarlos?

Gracias

En términos simples, si una clase hereda de 2 o más interfaces y si las interfaces tienen los mismos nombres de método, la clase no sabe qué método de interfaz se está implementando si utiliza la implementación de interfaz implícita. Este es uno de los escenarios en los que implementaría explícitamente una interfaz.

Implementación de interfaz implícita

public class MyClass : InterfaceOne, InterfaceTwo { public void InterfaceMethod() { Console.WriteLine("Which interface method is this?"); } } interface InterfaceOne { void InterfaceMethod(); } interface InterfaceTwo { void InterfaceMethod(); } 

Implementación de interfaz explícita

 public class MyClass : InterfaceOne, InterfaceTwo { void InterfaceOne.InterfaceMethod() { Console.WriteLine("Which interface method is this?"); } void InterfaceTwo.InterfaceMethod() { Console.WriteLine("Which interface method is this?"); } } interface InterfaceOne { void InterfaceMethod(); } interface InterfaceTwo { void InterfaceMethod(); } 

El siguiente enlace tiene un excelente video que explica este concepto
Implementación de interfaz explícita

Hay una forma más de verlo, desde la implementación laberíntica misma, aquí: http://blogs.msdn.com/cbrumme/archive/2003/05/03/51381.aspx .

Pero, en resumen, la implementación implícita le otorga una conversión de tipo is-a, la implementación explícita no será accesible a menos que el objeto se expulse explícitamente a ese tipo de interfaz.