Пользовательские элементы управления с тем же методом, вызывая их одинаково - PullRequest
3 голосов
/ 17 декабря 2011

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

Все элементы управления расширены из различных типов элементов управления (панель, текстовое поле, поле со списком и т. Д.), Но имеют несколько одинаковых методов.

Что бы я хотел сделать, это избежать этого:

public void SendMyMessage(Control thisControl)
{
    if(thisControl is myPanel) (thisControl as myPanel).SendMessage();
    else if(thisControl is myComboBox) (thisControl as myComboBox).SendMessage();
    else if(thisControl is myTextbox) (thisControl as myTextbox).SendMessage();
    else if(thisControl is myLabel) (thisControl as myLabel).SendMessage();
}

И, скорее, имел бы более простой метод, который позволял бы мне вызывать его в 1 строку(Отметив, что функция SendMessage (), которую я вызываю, выполняет разные действия на разных элементах управления, но не требует аргументов и вызывается одинаково)

Ответы [ 2 ]

2 голосов
/ 17 декабря 2011

Я бы предложил использовать что-то вроде интерфейса IMessageSender во всех ваших элементах управления.Таким образом, вы можете иметь только одну проверку:

if (thisControl is IMessageSender)
  (thisControl as IMessageSender).SendMessage();

, где интерфейс выглядит следующим образом:

public interface IMessageSender
{
  void SendMessage();
}
2 голосов
/ 17 декабря 2011

Поместите сообщение в интерфейс, и все элементы управления реализуют интерфейс.

Ваш метод может просто использовать интерфейс напрямую и работать с любым из элементов управления.

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