Правило FXCop Методы интерфейса должны вызываться дочерними типами - PullRequest
0 голосов
/ 20 сентября 2011

При запуске FxCop я получаю сообщение об ошибке, что методы интерфейса должны вызываться дочерними типами.

В резолюции говорится следующее:

«Сделать« MenuPreview »запечатанным (серьезное изменение, если этот класс был ранее отправлен), реализовать метод не явно, или реализовать новый метод, который предоставляет функциональность 'IComponentConnector.Connect (int, object)' и является видимым для производных классов. "

Я получаю это для всех классов, производных от Window или некоторого другого класса пользовательского интерфейса. Это красная сельдь, которую я могу игнорировать, или я должен что-то делать?

1 Ответ

0 голосов
/ 21 сентября 2011

Я думаю, что проблема в том, что если интерфейс реализован явно, для производного класса будет невозможно как изменить поведение интерфейса, так и использовать поведение базового класса.Распространенная схема, позволяющая обойти эту трудность в случаях, когда требуется явная реализация интерфейса, состоит в том, чтобы интерфейс ничего не делал, а вызывал защищенный виртуальный метод, и чтобы любые производные классы, которые хотят переопределить поведение интерфейса, делают это с помощьюзащищенный виртуальный метод.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...