Mientras trabajaba en una actualización, me encontré con un código como este.Implementación implícita y explícita de la interfaz
interface ICustomization
{
IMMColumnsDefinition GetColumnsDefinition();
}
class Customization : ICustomization
{
private readonly ColumnDefinition _columnDefinition;
//More code here.
public ColumnsDefinition GetColumnsDefinition()
{
return _columnDefinition;
}
ColumnsDefinition ICustomization.GetColumnsDefinition() //redundant
{
return GetColumnsDefinition();
}
}
Mi pregunta es: ¿Hay alguna necesidad/uso de la aplicación 'explícito' de la interfaz de esta pieza de código? ¿Creará algún problema si elimino el método (implementación explícita de la interfaz) que he marcado como "redundante" más arriba?
PD: Entiendo que la implementación explícita de la interfaz es muy importante, y puede usarse cuando necesitamos dar acceso a un método solo a nivel de interfaz, y usar dos interfaces con la misma firma de método.
¿Por qué tener una implementación virtual no explícita sería una razón para tener también una implementación explícita? Y si implementa ambos y crea una subclase, ¿qué pasaría si llama al método en una variable de interfaz que hace referencia a un objeto de subclase? Podría dar un ejemplo? _Ver también [mi pregunta] (http://stackoverflow.com/q/10165296/537956) ._ – comecme