2017-01-04 5 views
0

У меня есть 5 веб-форм, которые содержат те же элементы управления пользователя с разной функциональностью. Текущая система соответствует шаблону MVP. Все эти веб-формы унаследованы от одного базового класса (см. Следующий рисунок.). Теперь я должен отключить каждую форму отдельно для определенного условия, которое является общим для всех форм. Итак, я написал метод для одной из форм, чтобы отключить каждое поле в своих пользовательских элементах управления, и он отлично работает. Я могу повторно использовать этот метод для остальных веб-форм, поскольку все они содержат один и тот же набор пользовательских элементов управления. enter image description hereРешение для повторного использования метода дочернего класса в его дочерних элементах (ASP.NET/VB.NET)

В DisableControls() метод вызывает DisableInputs() метод каждого пользовательского элемента управления:

enter image description here

Это будет дублироваться в других классах веб-форм. Кто-нибудь может предложить подходящее решение для повторного использования этого метода?

+0

Положите его в базовом классе, что все формы вытекают из ..? – user1429080

+0

Спасибо .. Я отредактировал мое сообщение, чтобы объяснить код. Если я поставлю DisableControls() в BaseClass, тогда я должен передать пользовательские элементы управления в качестве параметров. В противном случае я не могу получить доступ к элементам управления пользователя в классе child из базового класса. Таким образом, он будет похож на метод DisableControls() в общем классе утилиты в качестве общего метода. Пожалуйста, поправьте меня, если я ошибаюсь. – Watz

+0

Звуки о правильном, да. Если, однако, у вас есть 5 форм, у всех которых есть 'UserControl1' и' UserControl2', тогда у вас есть возможность поместить их в базовый класс. И тогда ваш метод имеет к ним доступ. В любом случае, не переусердствуйте, если не будет больше форм с той же структурой ... – user1429080

ответ

1

Если вы включили пустой подкомпонент в базовый класс для DisableControls(), вы можете переопределить это в дочерних классах, не указывая базовые знания о дочерних классах.

Что-то вроде этого:

Public Class Base 
    Overridable Sub DisableControls() 
     'Do nothing if nothing is implemented 
    End Sub 
End Class 

Public Class Instance1 
    Inherits Base 
    Public Overrides Sub DisableControls() 
     Me.UserControl1.DisableInputs() 
     Me.UserControl2.DisableInputs() 
    End Sub 
End Class 

Public Class Instance2 
    Inherits Base 
    Public Overrides Sub DisableControls() 
     Me.UserControl3.DisableInputs() 
    End Sub 
End Class 
+0

Спасибо, я сделал аналогичную вещь, чтобы сделать код повторно используемым. – Watz