implementação explícita da interface não pode ser virtual
Para o registro, eu já vi issoconnect item mas não consigo entender qual seria o problema em apoiar iss
Diga que tenho o seguinte código:
public interface IInterface
{
void Method();
}
public class Base : IInterface
{
virtual void IInterface.Method()
{
throw new NotImplementedException();
}
}
qual é o problema com o identificador virtual? Ter um modificador virtual tornaria possíveloverride
indicando que há uma implementação diferente na classe base. Eu posso fazê-lo funcionar agora removendo o método virtual e criando a classe derivada como esta:
public class Derived : IInterface
{
void IInterface.Method()
{
throw new NotImplementedException();
}
}
e qualquer forma, não tenho nenhuma indicação de que estou substituindo alguma cois
Atualizar
De acordo com a especificação C # (parte: 20.4.1 Implementações explícitas dos membros da interface), existem 2 motivo
No entanto, não diz nada sobre por que você não pode tornar esses métodos virtuai
Update2:
Dadas as respostas, acho que devo reformular a pergunta real aqui. Se as duas razões acima são a razão pela qual a implementação explícita de interfaces foi possível em primeiro lugar. Por que seria um problema se você tornar um método virtual.