Как провести рефакторинг старого приложения формы Windows С#, реализующего правило DRY? ⇐ C#
-
Anonymous
Как провести рефакторинг старого приложения формы Windows С#, реализующего правило DRY?
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, это создало для меня проблему, поскольку я удалил определение элемента управления из каждого дизайнера формы.
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, это создало для меня проблему, поскольку я удалил определение элемента управления из каждого дизайнера формы.
Мобильная версия