У меня есть базовая форма winforms, которая содержит вызовы определенных методов, которые должны быть реализованы в производных формах.Я хочу убедиться, что мои производные формы действительно реализуют эти методы с максимально возможной поддержкой времени компиляции.Всем нам известна проблема невозможности определить класс winforms как абстрактный, если вы хотите использовать конструктор (см. этот вопрос ).
Я создал интерфейс, который содержит сигнатуры методов, которые должны быть реализованы в производной форме.Затем я вызываю методы интерфейса непосредственно из базового класса, например, так:
((IMyFormInterface)this).SomeInterfaceMethod();
(Обратите внимание, что мой базовый класс не наследует IMyFormInterface
. Если это так, то производные классы не будут вынуждены реализовыватьэто.)
А потом я наследую от интерфейса в своей производной форме (которую компилятор заставляет меня реализовать):
public partial class TestForm : BaseForm, IMyFormInterface
Единственное, что мне (или другим пользователям) приходитсяпомните, это наследовать IMyFormInterface
.
Допустимо ли вызывать методы интерфейса напрямую, как это?Моя цель во всем этом заключается в том, чтобы максимально приблизиться к тому, чтобы производные формы реализовывали эти «абстрактные» методы форм во время компиляции, а не во время выполнения.