У меня есть три потенциальные категории ввода, являющиеся именем человека, именем компании или адресом, соответственно.Уместно ли здесь использовать делегат?
Игнорирование моих заполнителей и специальных методов, вот два из них:
protected void nameSearch_Click(object sender, EventArgs e)
{
if (offRadio.Checked == false && comRadio.Checked == false)
{
errorAlert("Please specify the search type");
}
else
{
strValidator(nameBox.Text);// This is the function I need to change.
//In it's current condition, it will only validate against
// general properties, however to do more in depth
// validation, the validation method needs to be dependant
// on the type of input
if (nameBox.Text != string.Empty)
{
if (offRadio.Checked == true)
//This is an input of the person name category
{
logic.createQuery(fnms(nameBox.Text),
"personName", lnms(nameBox.Text));
}
else if (comRadio.Checked == true)
//And this is of the Company name category
{
logic.createQuery(nameBox.Text, "companyName");
}
}
else
{
errorAlert("Please enter a search parameter");
}
}
}
Целью здесь является анализ вклада от nameBox.Text
и ветеринара это против протоколов анти-инъекций. Я хотел бы в идеале использовать один метод для этого, и для этого метода быть разными в зависимости от того, является ли вход от имени человека (offRadio.Checked = true
) или название компании (comRadio.Checked = true
). I может иметь два метода (или даже один, основанный на условии), но это приведет к тому, что nameSearch_Click()
станет относительным трясином вложенных операторов, чего я бы хотел избежать.
Согласно некоторым моим исследованиям, способ сделать это - использовать пустоту делегата, однако я не понимаю, как это реализовать. Является ли мой метод валидации делегатом? Или мне нужно создать новый метод делегирования и переместить содержимое моего Click
событий?
Кроме того, как добавить логику, чтобы определить, что такое категория ввода?
Почему 'делегат'? Не можете ли вы назвать некоторый метод класса проверки с некоторыми параметрами (значениями переключателей или значением «enum» на основе их значений)? Например, 'Validator.CheckUrl (textBoxUrl.Text, Validator.Mode.TrimSpaces);' – Sinatr
@Sinatr. Идея заключалась в том, чтобы сохранить код как можно меньше, однако вы можете быть правы в том, что ваше предложение может быть моим ... «безопасный» вариант. – Wolfish
Show пожалуйста * большой * код и посмотрим. – Sinatr