Я думаю, что проблема в том, что если интерфейс реализован явно, для производного класса будет невозможно как изменить поведение интерфейса, так и использовать поведение базового класса.Распространенная схема, позволяющая обойти эту трудность в случаях, когда требуется явная реализация интерфейса, состоит в том, чтобы интерфейс ничего не делал, а вызывал защищенный виртуальный метод, и чтобы любые производные классы, которые хотят переопределить поведение интерфейса, делают это с помощьюзащищенный виртуальный метод.
Рассмотрим IDisposable.Dispose ().Если бы код в явной реализации фактически отвечал за выполнение удаления, у производного класса не было бы возможности добавить свою собственную логику удаления, кроме как путем повторной реализации IDisposable, и не было бы способа для класса, который повторно реализовал IDisposable, получить доступ к егоРодительский метод Dispose.Хотя Microsoft могла иметь IDisposable.Dispose для вызова защищенной функции с другим именем, она решила использовать то же имя, но добавить фиктивный параметр типа Boolean.