Я думаю, проблема в том, что DisplayView
является виртуальным и вызывает виртуальные методы. В большинстве случаев виртуальные методы вызываются конечными методами как средство изменения поведения, например, в шаблоне стратегии. Если последний метод вызывает виртуальный метод, компилятор знает, что виртуальный метод всегда будет вызываться во всех производных классах, и поэтому он действителен для существования виртуального метода.
Тот факт, что вы вызываете виртуальный из виртуального, означает, что ваш дизайн может быть поставлен под сомнение: если DisplayView
является виртуальным, другая реализация может переопределить его. Текущая реализация вызывает виртуальный GetHeader
, но производный класс не может. Поэтому он не может гарантировать, что GetHeader
не является мертвым кодом.
Это, вероятно, то, на что FxCop обращает ваше внимание. Он хочет знать, что если вы определили виртуальный метод (в данном случае GetHeader
) в базовом классе, его будут использовать все производные реализации.
Я бы сфокусировался на том, чтобы сделать DisplayView
финальным, или оценил бы ваш дизайн в этом свете.