a implementación de la interfaz explícita no puede ser virtua
Para el registro, ya he visto estoconectar elemento pero realmente no puedo entender cuál sería el problema para apoyar esto.
Digo que tengo el siguiente código:
public interface IInterface
{
void Method();
}
public class Base : IInterface
{
virtual void IInterface.Method()
{
throw new NotImplementedException();
}
}
¿Cuál es el problema con el identificador virtual? Tener un modificador virtual permitiríaoverride
indicando que hay una implementación diferente en la clase base. Puedo hacer que funcione ahora eliminando el método virtual y creando la clase derivada de esta manera:
public class Derived : IInterface
{
void IInterface.Method()
{
throw new NotImplementedException();
}
}
in embargo, de esta manera no tengo ninguna indicación de que estoy anulando algo.
Actualizar
Según la especificación de C # (parte: 20.4.1 Implementaciones explícitas de miembros de interfaz) hay 2 razones.
Sin embargo, no dice nada sobre por qué no puede hacer que estos métodos sean virtuales.
Actualización2:
Dadas las respuestas, creo que debería reformular la pregunta real aquí. Si las 2 razones anteriores son la razón por la cual la implementación explícita de interfaces fue posible en primer lugar. ¿Por qué sería un problema crear un método virtual?