Как провести рефакторинг старого приложения формы Windows С#, реализующего правило DRY?C#

Место общения программистов C#
Ответить
Anonymous
 Как провести рефакторинг старого приложения формы Windows С#, реализующего правило DRY?

Сообщение Anonymous »


strong textЯ работаю над старой базой кода приложения C# Windows Form. Существует множество форм, имеющих одинаковые элементы управления, требующих одинаковой логики для проверки и некоторых других задач. Рассмотрим следующий код:

var пациентаMobileData = новые данные пациента { Идентификатор пациента = идентификатор пациента.SickID, PatientMobileNumber = txbPatientMobileNumber.Text, InsuranceOrganization = Convert.ToInt32(txbBaseInsuranceID.Text) }; bool isMobileNumberValid = AppointmentInputsChecker .CheckPatinetMobileNumber(пациентMobileData, исходящее сообщение); если (!isMobileNumberValid) { txbPatientMobileNumber.Focus(); вернуть ложь; } В этом сегменте кода я проверяю, требуется ли номер мобильного телефона на основании страховой организации и не повторяется ли номер мобильного телефона. Я переработал этот код, чтобы все формы использовали метод CheckPatinetMobileNumber для проверки номера мобильного телефона. Но этот отрезок приходится повторять во всех формах (12 форм). Как я могу сделать это еще проще, чтобы, например, родительская форма обрабатывала всю эту логику, а другие формы наследовали ее?

Я создал родительскую форму, реализующую всю эту логику, которая «НЕ» зависит от элементов управления формой. Но, как вы можете видеть, к каждой форме относятся элементы управления, например txbPatientMobileNumber. Поэтому я удалил их из каждого из дизайнера и добавил в родительскую форму. Другими словами, я удалил эту строку кода из form_1.designer.cs:

внутренний Ema.CustomeTextBox.EmaTextBox txbPatientMobileNumber; И добавил txbPatientMobileNumber в родительский класс формы (не в дизайнере, а внутри класса перед объявлением конструктора родительского класса):

public Ema.CustomeTextBox.EmaTextBox txbPatientMobileNumber; До сих пор я не замечал никаких проблем; но поскольку у каждого элемента управления есть какое-то событие, например onTextChange, это создало для меня проблему, поскольку я удалил определение элемента управления из каждого дизайнера формы.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»