porque - usar interface c#
¿Por qué la implementación explícita de una interfaz no puede ser pública? (2)
El motivo de una implementación de interfaz explícita es evitar las colisiones de nombres con el resultado final de que el objeto debe convertirse explícitamente en esa interfaz antes de llamar a esos métodos.
Puede pensar que estos métodos no son públicos en la clase, sino que están vinculados directamente a la interfaz. No hay razón para especificar público / privado / protegido ya que siempre será público ya que las interfaces no pueden tener miembros no públicos.
(Microsoft tiene una visión general sobre la implementación de la interfaz explícita )
Tengo método en clase que es la implementación de la interfaz. Cuando lo hice Implementación explícita recibí error del compilador
The modifier ''public'' is not valid for this item
¿Por qué no está permitido tener una implementación de interfaz public
explícita?
La implementación explícita de los miembros permite la desambiguación de los miembros de la interfaz con la misma firma.
Sin las implementaciones de miembros de la interfaz explícita, sería imposible que una clase o estructura tenga implementaciones diferentes de miembros de la interfaz con la misma firma y tipo de retorno.
¿Por qué la implementación explícita de una interfaz no puede ser pública? Cuando un miembro se implementa explícitamente, no se puede acceder a él a través de una instancia de clase, sino solo a través de una instancia de la interfaz.
public interface IPrinter
{
void Print();
}
public interface IScreen
{
void Print();
}
public class Document : IScreen,IPrinter
{
void IScreen.Print() { ...}
void IPrinter.Print() { ...}
}
.....
Document d=new Document();
IScreen i=d;
IPrinter p=d;
i.Print();
p.Print();
.....
Las implementaciones de miembros de la interfaz explícita no son accesibles a través de instancias de clase o estructura.