Как мне требовать, чтобы класс был Windows.Forms.Control и реализовывал интерфейс? - PullRequest
2 голосов
/ 29 ноября 2011

Я не уверен, что я делаю правильные вещи здесь ...

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

Представление состоит из двух основных частей: списка сообщений и средства просмотра.Мне нужно, чтобы этот просмотрщик был взаимозаменяемым, поэтому, если кому-то нужен другой стиль просмотра, он может просто обработать событие и изменить свойство.Моя первоначальная идея заключалась в том, чтобы просто иметь INoteViewer, но, поскольку я добавляю его в свою форму, мне также нужно гарантировать, что этот объект является своего рода Windows.Forms.Control.

Должен ли я продолжать в том же духелиний и, возможно, вызовет ArgumentException, если я не могу привести его к INoteViewer, или я должен пойти в другом направлении и создать класс, который наследуется от Windows.Forms.Control?

1 Ответ

1 голос
/ 29 ноября 2011

Чтобы сделать то, что вы хотите, вы можете сделать что-то вроде этого:

Public Interface IMyInterface
    Sub Method1()
    Sub Method2()

End Interface

Public MustInherit Class MyBaseControl
    Inherits Control
    Implements IMyInterface

    Public MustOverride Sub Method1() Implements IMyInterface.Method1
    Public MustOverride Sub Method2() Implements IMyInterface.Method2
End Class

Public Class MyControl
    Inherits MyBaseControl

    Public Overrides Sub Method1()

    End Sub

    Public Overrides Sub Method2()

    End Sub
End Class

На самом деле, если вы используете абстрактный класс, вы также можете не использовать интерфейс.

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