Для протокола, я уже видел этот элемент подключения , но я не могу понять, в чем проблема при его поддержке.
Скажем, у меня есть следующее код:
public interface IInterface
{
void Method();
}
public class Base : IInterface
{
virtual void IInterface.Method()
{
throw new NotImplementedException();
}
}
в чем проблема с виртуальным идентификатором? Наличие виртуального модификатора позволило бы переопределить
, указывая, что в базовом классе есть другая реализация. Теперь я могу заставить его работать, удалив виртуальный метод и создав производный класс следующим образом:
public class Derived : IInterface
{
void IInterface.Method()
{
throw new NotImplementedException();
}
}
однако в этом случае у меня вообще нет никаких указаний на то, что я что-то переопределяю.
Обновление:
Согласно спецификации C # (часть: 20.4.1 Явные реализации члена интерфейса) есть 2 причины.
Однако здесь ничего не говорится о том, почему вы не можете сделать эти методы виртуальными.
Update2:
Учитывая ответы, я думаю, что мне следует перефразировать реальный вопрос здесь. Если Вышеуказанные 2 причины - причина, по которой явная реализация интерфейсов стала возможной в первую очередь. Почему это может быть проблемой, если вы сделаете метод виртуальным.